SIC机器中的RESW如何工作

问题描述 投票:0回答:1

这是系统程序标准文本中给出的指令集 (Leland L Beck)用于将数据 5 从累加器传输到内存

众所周知,SIC 是一个假设的机器

LDA   FIVE   Load character 5 into register A
STA ALPHA    Store in Alpha
LDCH CHARZ      Load Character Z into A
STCH C1        Store in character variable  C1
.
.
.   
ALPHA RESW 1    One Word Variable
FIVE WORD 5     One-Word Constant
CHAR BYTE C 'Z' One Byte Constant
C1 RESB 1        One Byte Variable

我对这个指令的声明感到困惑

阿尔法 RESW 1

正在处理

您能否向我解释一下,或者给出详细的参考或答案,以帮助我理解汇编程序如何处理 RESW,以及在将助记符代码转换为目标代码时如何反映它,以及它们如何加载……并链接等等。 .

以及它是如何在处理器的微指令级别进行处理的

我是这个系统编程领域的业余爱好者,任何答案都将受到高度赞赏和极大的尊重

assembly instruction-set microprocessors sic
1个回答
0
投票

您的问题太宽泛,无法详细介绍从文本编程语言到使用内存运行程序的每个主题,因此这里有一个简短的概述。

所有编程语言都需要能够支持数据声明,例如全局变量、字符串文字、浮点常量等。但是,只有汇编器/编译器读取数据声明,处理器不读取数据声明。

汇编器读取每个数据声明,并在可执行程序文件中为该声明保留一些空间(模

.bss
,其中仅在程序文件内增加计数)。这些数据声明随后将在程序运行过程中成为内存。

每个数据声明都有一个或多个内存地址,并且关联的标签(如果存在)等于这些地址中的最低地址。

每次汇编器读取指令或数据声明时,它都会累积机器代码指令或数据项,附加到对象或可执行文件中当前内容的相关部分(可以是共享代码和数据或分离的代码和数据)数据)。当它这样做时,它会增加一个内部位置计数器,告诉它下一个可用的内存地址是什么。在某些系统上,它知道它放置在内存中的内容的绝对地址,而在其他系统上,它只知道距开头的偏移量。

在使用链接器的系统上,它将把类似的目标代码部分组合在一起,并解析交叉引用,最终输出是可执行程序文件。

如何处理此指令

ALPHA RESW 1

出于所有实际目的,此具体说明与

ALPHA WORD 0
相同。与
RESW
的区别是大于 1 的值可以用作创建初始为零的缓冲区或数组的简单方法。

标签可以被其他数据声明和处理器指令引用。

汇编器将对处理器指令中的标签的引用转换为“寻址模式”,这是处理器如何在运行时到达/访问该地址的编码。寻址模式通常会指定一些立即值来标识所需的内存位置。当处理器执行这样的指令时,会根据寻址模式进行地址计算,以便读写标号处的内存(或者捕获标号的地址,或者分支到标号)。 当可执行程序文件加载到内存中时,机器代码指令以及声明数据的空间和初始值都被加载到内存中,这就是实际存储的形成方式。

© www.soinside.com 2019 - 2024. All rights reserved.