68k 寄存器地址

5
这个问题很容易引起一系列的“你为什么要这样做?”的回答。
我在68k程序员参考手册中没有找到这些信息,但这可能是因为我不确定要搜索什么措辞。
这是68k的ADD操作码的指令格式。

enter image description here

位0-2和9-11指定了寄存器。68k的寄存器的二进制表示是什么?它们是“地址”吗?

是的,我知道我可以编写一个68k汇编程序并调试它以查找这些信息。我正在寻找参考资料。谢谢!


寄存器没有地址。如果你不理解这一点,那么你就不理解机器架构。位仅仅表示在CPU内部要使用哪个寄存器。它们由微码引擎进行解码。 - user2100815
我知道它们不是内存地址。这很明显。它们仍然可以被称为地址。另外,我并没有声称理解机器架构。我正在努力学习;请原谅我提问。 - mwcz
@mwcz 我们可以称它们为“zoinks”,但这并不意味着它们就是“zoinks”。术语非常重要,在编写和理解机器码程序的情况下尤其重要。 - user2100815
1
这就是我问“它们是否为‘地址’”的原因。它们可能是“寄存器地址”,我并不知道。不要因为请求术语澄清而抨击别人,然后告诉他们了解术语的重要性。 - mwcz
1
只是为了在你们两个之间定位一下:在RISC架构中(68000可以看作是其前身),有“寄存器文件”的概念,因此三个寄存器位可以被视为对寄存器文件的索引。然而,“文件”本身驻留在CPU内部,因此在我看来,这只会使汇编程序设计术语变得不必要地模糊。 - Olof Forshell
感谢你的调解,Olaf。;) 还有感谢你分享那个很酷的历史片段。我之前从未听说过“寄存器文件”这个术语。术语确实很重要! - mwcz
3个回答

5

请参阅第2.1节“指令格式”:

指令使用操作码规定要执行的功能,并定义每个操作数的位置。指令通过寄存器说明指定操作数的位置,指令的寄存器字段包含寄存器编号;通过有效地址,指令的有效地址字段包含地址模式信息;或通过隐含引用,指令的定义意味着使用特定的寄存器。(强调添加)


谢谢,这很有帮助。我刚刚想到了,它是如此明显,所以不奇怪它没有列在文档中 :) - mwcz
1
@mwcz 对于我们这些凡人来说,遵循这个问题的是寄存器号码一个三位二进制表示的八个D0-D7或A0-D7寄存器吗? - Caltor
1
@Caltor 是的,没错。当我发布这个问题时,我对如何通过3位字段引用所有16个寄存器(A和D寄存器)感到困惑。现在看来这个问题有点傻,因为显然(回顾一下),数字(0-7)包含在寄存器字段中,而寻址模式确定该数字是指A还是D寄存器。 - mwcz
1
@mwcz 啊,寻址模式决定了它是A寄存器还是D寄存器;我漏掉了这一部分。我认为没有所谓的愚蠢问题。无论如何,我在理解68k方面发现它很有用。谢谢。 - Caltor

2
这可能是指您提供的手册第1-2页的图1-1中列出的An和Dn寄存器。

1

这3位指定地址寄存器编号,从0(位:0-0-0)到7(位:1-1-1)。但通常您可以让汇编程序来处理这些事情。 希望这能帮到您, 戴夫


谢谢。当时我正在编写模拟器,所以依赖汇编器不是一个选择。 - mwcz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接