ISA指令集是由0和1组成的机器语言,难以记忆和阅读,因此人们发明汇编程序帮助记忆。
汇编基本算是和机器指令一一对应的关系,可以认为是给机器指令的每个部分分别起了别名。
一、汇编程序的组成
-
操作码和操作数:
操作码如ADD表示bit[15:12]=0001,AND表示bit[15:12]=0101,操作数R0表示编号为0的寄存器。 -
标号:
指向内存单元的一个符号名,有两种用途,一种用于跳转命令跳转的地址,另一种用于读取或存储指令时访问的内存位置 -
注释:
以";"开头的字符串,只给人阅读的,汇编翻译程序会忽略
另外,汇编器还定义了一些伪操作,可以让程序员指导汇编编译器的翻译过程。
比如ORIG表示程序起始位置,FILL表示占用这个命令的下一个地址。
二、汇编过程
汇编编译器会做一个两遍扫描的操作。
- 先读一遍汇编程序,找出前面提到的汇编的标号,做出一张符号表把标号和内存地址一一对应。
- 再真正翻译汇编程序成机器指令,遇到标号则通过上一步生成的符号表转化为对应内存地址。
汇编程序文件通常以".asm"结尾,编译后的结果是".obj"结尾的文件,有的汇编编译器还会生成".sym"表示符号表。
关于我:
linxinzhe,全栈工程师,目前供职于某500强通信企业,人工智能,区块链爱好者。
GitHub:https://github.com/linxinzhe
欢迎留言讨论,也欢迎关注我~
我也会关注你的哦!
网友评论