assembly 机器代码和汇编代码是体系结构的一部分吗?

5f0d552i  于 2022-12-19  发布在  其他
关注(0)|答案(1)|浏览(126)

汇编代码和机器代码是由架构指定的吗?我知道你如何实现架构对你来说是不重要的(这取决于微架构是否能实现架构)。但我不明白汇编代码或机器代码是由架构指定的吗?

zpgglvta

zpgglvta1#

机器码由CPU解码;它的格式和每个指令的行为是由CPU实现的指令集体系结构的一部分。
汇编源代码是任意的,只由软件(汇编器和反汇编器)处理。正如@old_timer喜欢说的,汇编是由软件工具定义的,而不是CPu。

供应商通常会定义一个asm语法,这样他们就可以在记录伊萨如何工作时在手册中使用它,比如寄存器名和指令名。因此,它被用于ISA文档中,但主要是作为一种向人类描述它的方式。(或者也可以作为供应商推荐的汇编语言的规范。)

对于许多现实世界的ISA,没有人觉得有必要为相同的机器码格式发明不同的文本语法(也许除了Go语言和衍生出它的Plan 9生态系统)。
但是有些ISA,最著名的是x86,有许多不同的文本语法。x86机器码在如何编码相同的指令方面有一些冗余,有些语法允许重写来指定细节。但这不是人们发明不同语法的原因。
Intel语法(https://stackoverflow.com/tags/intel-syntax/info)有多种风格,Intel和AMD手册中使用的语法。MASM/TASM非常相似,而NASM/FASM有一些不同的解释。这只是针对 instruction 语法;指令在汇编器之间也不同,汇编器在指令、操作数和寻址模式的语法上大多是一致的。
AT&T的设计看起来更像PDP-11语法,目标操作数在右边,寄存器名称上有%修饰,使解析更简单。https://stackoverflow.com/tags/att/info

相关问题