我一直在网上阅读有关汇编器工作的信息,但它非常令人困惑。总结到目前为止我所理解的是,汇编器基本上是一个文本解析器,可以访问查找表以将汇编语言指令映射到等效的二进制指令。我对么 ?如果是的话,这个查找表存在于 CPU 的物理硬件中的什么位置。
CPU 执行机器代码(一堆数字)。这些数字通常以某种方式排列(以便 CPU 更容易解码),涉及整体格式的各种规则,哪些部分确定操作码,哪些部分确定指令的操作数等。
汇编语言主要(不完全 - 见下文)是机器代码的“纯文本”表示。 CPU 使用的所有规则(对于机器代码)都会成为汇编器使用的规则。例如,如果描述某些指令的机器代码的 CPU 文档说“位 4 到 7 确定哪个寄存器用于第一个操作数”,那么汇编器可能有一个函数(或者可能是一个表)将寄存器名称转换为位 4 到 7 的正确值。指令组(将指令的助记符转换为任意数量的操作码字节的函数或表)也会发生类似的情况。
所有用于将文本转换为机器代码(函数、表等)的内容都是由编写汇编程序的人创建的(以遵守 CPU 文档中关于如何将所有内容编码为机器代码的说明)。这些都不是来自 CPU 本身;而是来自 CPU 本身。大多数汇编器将在完全不同的 CPU 上运行(例如,大多数 80x86 汇编器可以轻松移植到 ARM 或 PowerPC 或 MIP 等上运行)。
除此之外,汇编器还必须提供有用的错误检查和报告(这样,如果汇编语言源代码中存在错误,程序员很容易找出问题所在 - 例如,使用漂亮的/描述性的错误消息行号等);加上对预处理的支持(宏等);加上对各种输出文件格式的支持(适合不同链接器的目标文件、原始输出文件类型,如“平面二进制”等);和指令(控制预期的 CPU 模式、对齐等)以及程序员描述“非代码数据”的方式。
所有这些其他东西也是由编写汇编器的人创建的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)