assembly SIC设备中的RESW是如何工作的

hgqdbh6s  于 2023-10-19  发布在  其他
关注(0)|答案(1)|浏览(99)

这是在系统程序(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

我在声明中对这一指示
阿尔法雷斯威1号酒店
正在处理
你能向我解释或给予一个详细的参考或答案,以帮助我理解如何RESW是由汇编程序处理,它是如何得到反映,而转换此助记符代码的目标代码,以及他们如何得到加载..和链接和所有..
以及它是如何在处理器的微指令级上被处理的
我是一个业余爱好者在这个系统编程领域和任何答案将是高度赞赏与极大的尊重

ncecgwcz

ncecgwcz1#

你的问题太宽泛了,无法给予从文本编程语言到用内存运行程序的每一个主题的细节,所以这里有一个简短的概述。
所有的编程语言都需要能够支持数据声明,对于全局变量,对于字符串,浮点常量等等,然而,只有汇编器/编译器读取数据声明,处理器不读取数据声明。
汇编程序读取每个数据声明,并在可执行程序文件中为该声明保留一些空间(模.bss,其中程序文件中只有计数增加)。数据声明稍后将在运行程序的进程中成为内存。
每个数据声明都有一个或多个内存地址,并且相关的标签(如果存在)等同于这些地址中的最低地址。
每次指令或数据声明被汇编程序读取时,它都会累积一条机器代码指令或数据项,附加到对象或可执行文件中当前内容的相关部分(可以是共享代码和数据或分离代码和数据)。当它这样做时,它递增一个内部位置计数器,告诉它下一个可用的内存地址将是什么。在某些系统上,它知道它放在内存中的东西的绝对地址,而在其他系统上,它只知道从开始的偏移量。
在使用链接器的系统上,它将合并将目标代码的相似部分组合在一起,并解决交叉引用,最终输出为可执行程序文件。
如何处理此指令ALPHA RESW 1
实际上,这个特定指令与ALPHA WORD 0相同。与RESW的区别在于,可以使用大于1的值作为创建初始为零的缓冲区或数组的简单方法。
标签可以被其他数据声明和处理器指令引用。
汇编器将处理器指令中对标签的引用转换为addressing mode,这是处理器如何在运行时到达/访问该地址的编码。寻址模式通常会指定一些立即值来标识所需的内存位置。当处理器执行这样的指令时,它将根据寻址模式执行地址计算,以便在标签处读取或写入存储器(或捕获标签的地址,或到标签的分支)。
当可执行程序文件被加载到内存中时,机器代码指令被加载到内存中,声明数据的空间和初始值也被加载到内存中,这就是实际存储的方式。

相关问题