Assembly MDR、MAR寄存器,与汇编语言有关

Assembly MDR、MAR寄存器,与汇编语言有关,assembly,x86,computer-architecture,Assembly,X86,Computer Architecture,在过去的几周里,我一直在阅读汇编编程和计算机体系结构方面的知识,但我还有几个问题没有找到答案 在阅读CPU构建等内容时,您将了解MAR和MDR寄存器,以及它们如何控制内存和CPU之间的数据流 另外,在这里引用IA-32的汇编语言中,我们了解到x86体系结构有8个通用寄存器EAX、ESP、EDI等,6个段寄存器和2个控制寄存器,1个标志寄存器和一个指令指针。总共有16个寄存器 汇编语言指南中提到的寄存器中没有一个提到MDR和MAR 问题如下: MAR/MDR如何适应汇编语言寄存器列表 x86实际上

在过去的几周里,我一直在阅读汇编编程和计算机体系结构方面的知识,但我还有几个问题没有找到答案

在阅读CPU构建等内容时,您将了解MAR和MDR寄存器,以及它们如何控制内存和CPU之间的数据流

另外,在这里引用IA-32的汇编语言中,我们了解到x86体系结构有8个通用寄存器EAX、ESP、EDI等,6个段寄存器和2个控制寄存器,1个标志寄存器和一个指令指针。总共有16个寄存器

汇编语言指南中提到的寄存器中没有一个提到MDR和MAR

问题如下:

MAR/MDR如何适应汇编语言寄存器列表

x86实际上是否有超过16个寄存器

ARM/MIPS有多少个寄存器


非常感谢。MAR/MDR寄存器是一种特殊的实现技术,可用于CPU直接控制内存总线。因此,它们只适用于简单的处理器——您命名的所有处理器在CPU和内存之间都有一个缓存,因此要复杂得多

然而,要理解的关键是,芯片支持的汇编/机器语言只是一种语言。很少有CPU直接执行该语言——大多数CPU都涉及某种解释器或翻译器,将指令分解为更简单的执行步骤。最接近于真正实现汇编语言的CPU的是类似于早期MIPS处理器的东西,这是RISC设计理念的一部分。但即使在那里,后来的版本也开始改变

MAR/MDR如何适应汇编语言寄存器列表? 他们没有。对于内部使用MAR/MDR的处理器(如6800),它们不能直接从汇编语言访问。相反,这种类型的处理器使用微码指令来实现汇编指令,这些微码指令在汇编代码中可见的MAR、MDR和其他寄存器A、B、X和S之间移动数据。8088可能使用了同样的技术——8086必然更复杂,因为它有一个16位数据总线,但仍然包括8位指令

x86实际上是否有超过16个寄存器? 最新的x86处理器使用寄存器重命名,其中机器指令被动态转换为UOP并可能重新排序,因此有更多的实际硬件寄存器允许并行处理更多的指令

ARM/MIPS有多少个寄存器?
原始ARM有16个,包括PC,而原始MIPS有31个,加上PC。更高版本增加了浮点寄存器。此外,ARM还有一些“影子”寄存器——用于处理中断的备用寄存器,两个寄存器都有MSR寄存器,它们与普通寄存器不同——不用于计算,MAR/MDR寄存器是一种特殊的实现技术,可用于CPU直接控制内存总线。因此,它们只适用于简单的处理器——您命名的所有处理器在CPU和内存之间都有一个缓存,因此要复杂得多

然而,要理解的关键是,芯片支持的汇编/机器语言只是一种语言。很少有CPU直接执行该语言——大多数CPU都涉及某种解释器或翻译器,将指令分解为更简单的执行步骤。最接近于真正实现汇编语言的CPU的是类似于早期MIPS处理器的东西,这是RISC设计理念的一部分。但即使在那里,后来的版本也开始改变

MAR/MDR如何适应汇编语言寄存器列表? 他们没有。对于内部使用MAR/MDR的处理器(如6800),它们不能直接从汇编语言访问。相反,这种类型的处理器使用微码指令来实现汇编指令,这些微码指令在汇编代码中可见的MAR、MDR和其他寄存器A、B、X和S之间移动数据。8088可能使用了同样的技术——8086必然更复杂,因为它有一个16位数据总线,但仍然包括8位指令

x86实际上是否有超过16个寄存器? 最新的x86处理器使用寄存器重命名,其中机器指令被动态转换为UOP并可能重新排序,因此有更多的实际硬件寄存器允许并行处理更多的指令

ARM/MIPS有多少个寄存器? 原始ARM有16个,包括PC,而原始MIPS有31个,加上PC。更高版本增加了浮点寄存器。臂 此外,还有一些“影子”寄存器用于处理中断的备用寄存器,两个寄存器都有MSR寄存器,它们与普通寄存器不同-您不使用它们进行计算,而是用于控制事情。

试着动手。 它有点旧,但它很好地解释了处理器的基本内部结构。

试着动手。
它有点旧,但它很好地解释了处理器的基本内部结构。

ARM的新V8提供31个通用寄存器。ARM的新V8提供31个通用寄存器。您的此链接被我的广告拦截器阻止。。。如果你要引用一本书,至少给出它的标题。你的这个链接被我的广告拦截器屏蔽了。。。如果你要引用一本书,至少要给出它的书名。我的答案集中在一个事实上,即现代x86不能有一个MDR/MAR,因为这对于一个具有许多加载和存储缓冲区的超标量流水线微体系结构来说毫无意义。我的答案集中在一个事实上,即现代x86不能有一个MDR/MAR,因为这对于一个具有许多加载和存储缓冲区的超标量流水线微体系结构来说毫无意义。