0
  1. 如果我是正确的,ISA 是机器语言中的一组指令。那么指令是 ISA 0/1 二进制序列吗?
  2. 为什么我看到 ISA 中的说明是书中人类可读的文字?

    ISA 中表示指令的人类可读单词是否与 ISA 汇编语言中使用的助记符相同?

    ISA 中指令的人类可读文字是 ISA 的一部分吗?

    如果是,是否有一个翻译过程可以将 ISA 中的人类可读指令翻译成机器语言,就像汇编程序将汇编语言翻译成机器语言一样?

谢谢。

4

2 回答 2

1

ISA 至少定义了指令的名称和指令及其操作数的二进制编码。它还可以定义要使用的汇编器语法/语义,即人类可读的形式。

但是,实际的编译器可以使用不同的语法。例如:对于 IA32 ISA (x86),有一个 Intel 和一个 AT&T 汇编器样式。两者的区别在于结果寄存器是在汇编指令中指定为第一个操作数还是最后一个操作数。

于 2016-02-05T23:38:53.290 回答
1

书中人类可读的单词称为汇编语言,是的,一种称为汇编器的工具将汇编语言转换为机器代码,机器代码只是对逻辑有意义的一和零。您还可以反汇编机器代码并最终使用汇编语言。

特定处理器的指令集合或指令集称为指令集或指令集架构或 ISA。

机器代码才是最重要的,这就是处理器运行的内容。人类可读的汇编语言不一定有标准。设计处理器的公司通常会创建包含机器代码和汇编语言的文档,并且通常他们会创建或让某人创建与该汇编语言匹配的汇编程序。但这并不构成标准。任何人都可以为该架构发明他们想要的任何汇编语言和汇编器,只要它产生机器代码(如果他们希望它有用,那么如果这是他们的目标,那么可能会产生随机垃圾并让它崩溃)。

intel vs at&t 格式以针对同一处理器系列的不同汇编语言而闻名。但是做 gnu 汇编器端口的人往往也会弄乱原始的汇编语言。大多数指令,汇编语言的非指令部分是可能因一个汇编程序而异的部分。再次,您可以坐下来制作自己的语法,并构想您想要的任何语法,只要您的汇编器和/或编译器为该目标生成工作机器代码。

因为你真的必须有一个汇编器来开发和测试一个新的指令集......你有一个汇编器......当移植一个编译器或语言时,它的作者不必疯狂地阅读二进制机器代码,他们可以输出然后汇编语言产生汇编程序。这是一种非常常见的方法,但一些编译器出于各种原因直接使用机器代码。JIT,或“只是因为我可以”。

于 2016-02-06T00:25:24.510 回答