MIPS-32 操作码格式:大写还是小写?

Chr*_*llo -1 assembly mips opcode mips32

我目前正在学习计算机组织课程,并且一直在研究 MIPS-32 架构。我注意到我们使用的书列出的操作码全部为小写,而教授列出的操作码全部为大写。我在不同的网站上查找了这一点,发现有些网站的操作码全部为大写,而其他网站的操作码全部为小写。我在堆栈溢出上查找了类似的问题,但没有找到。

例如,要添加,我们可以这样:

ADD $s2, $s1, $s0
Run Code Online (Sandbox Code Playgroud)

但是,其他网站和本书将其描述为:

add $s2, $s1, $s0
Run Code Online (Sandbox Code Playgroud)

谁能澄清哪种操作码格式更传统?我还没有构建汇编语言程序,所以我不确定操作码是否区分大小写;他们是吗?

注:我使用的书是David A. Patterson 和 John L. Hennessy 编写的《Computer Organization and Design MIPS Edition: The Hardware/Software Interface》。

Pet*_*des 5

这些不是操作码(二进制机器代码的一部分),它们只是asm 助记符,即汇编器的文本输入。(请注意,“操作码”有时用来表示二进制的整个指令,包括对操作数进行编码的部分,但这很愚蠢,因为我们已经有了“指令”一词。)

大多数汇编器(以及所有 MIPS 汇编器 AFAIK)对于助记符和寄存器名称不区分大小写。
一种良好的现代风格约定是使用小写字母表示真正的助记符,使用大写字母表示宏。

所有大写字母(包括操作数)过去很常见,特别是对于 8 位/16 位 CPU 和微控制器(甚至较旧的早期计算机),但肯定被某些人用于其他系统,包括更现代的系统。 其中一些是来自仅支持大写字母的系统的惯性:请参阅何时汇编源代码开始用小写字母编写?关于逆向计算.SE。

文档中,如果您想要自由地将指令名称与文本混合并讨论指令,通常会用全部大写字母编写助记符,尽管粗体code也可以。考虑到打印格式的书籍和材料通常更喜欢大写字母。在线内容,例如 Stack Overflow 答案经常使用code,但在具有太多指令或寄存器名称的段落中可能看起来很混乱。大写字母往往会保持可读性,而不会吸引段落中其他地方的注意力(例如这个),并且根据系统的不同,可以更容易输入。(这样降价变得code很容易。)

AND、OR 和 ADD 是常见的指令,如果您不采取任何措施使它们有所不同,那么它们在句子中会非常混乱。不那么ADDIU。

在实际的 asm 源文件中,每行的格式相当严格,注释通常从一致的列开始向右缩进,并且始终用特殊字符分隔开(#在标准 MIPS 汇编中)。这避免了任何歧义,尽管在评论中我可能在与自由格式文本混合时使用大写约定;

addu $t0, $t1, $t2    # not ADD because we don't want to fault on signed overflow
Run Code Online (Sandbox Code Playgroud)