我一直在阅读有关例如32位微处理器架构。我有一个简单的问题:如果浮点数中的最大位数是32位,那么该数字如何进入微处理器进行处理?它可以作为机器语言指令的一部分吗?因为如果答案是肯定的,那么就不必构成整个机器语言指令(换句话说,控制位或操作码或其他任何东西都没有空间,因为所有32位都将用于数字本身)。它是如何实际完成的,即是否有一个机器语言命令说“注意CPU:您将读取的下一个机器语言命令实际上不是命令;它实际上是一个数字”。
或者,替代地,提供给计算机的所有“数据”是否必须单独进入,而不是作为机器语言指令的一部分?
特别是,我想知道英特尔微处理器如何处理这个问题。
答案 0 :(得分:0)
我的程序集有点生疏,但我记得的是有指令的特定寄存器和数据的特定寄存器。因此,您可以将下一个数据项移动到相关寄存器中,然后将所需指令推送到AX(?)寄存器中。
但是,我提醒 - 上次我写集会的时候是2004年......
答案 1 :(得分:0)
cpu上的所有数据都通过中央总线或其他通道移动。数据存储在内存或缓存中,尽管缓存中没有太多空间。假设你使用inc eax;命令,inc本身是从RAM中获取的信息。事实上,有一个像上面那样的内部cpu命令,其中EAX增加。然后有一些命令需要外部数据。对于这些命令,指令的一部分是地址本身。在后来的英特尔cpus中,可以在指令本身中添加一个操作数,因为它更小。指令中的地址是指向所需数据的指针或指向所需数据指针的指针。
底线,CPU查找指令。如果它引导的第一件事不是一条指令,那么cpu仍会将它视为一个数字而且会弄乱一切。
示例:假设我们有一个8位CPU,内存中第一个被加载到cpu中的东西应该是一条指令,所以假设它得到01001010,那么操作码是01,(add或we),然后指令将添加我们在地址001010到累加器
该死的我很难解释这个
答案 2 :(得分:0)
通常,机器语言指令可以包含多个单词。因此,一个字是指令下一个字或字与立即数据相关联(要注册的值,或要操作的存储器地址)。这就是CISC processors上的工作方式,就像Intel x86相关的架构一样。
但你正在做点什么。在RISC体系结构中,每条指令通常只有一个字。在这种情况下,要加载32位值,需要两个指令。换句话说,有一个单字指令用于加载具有较少位的值,然后是另一个单字指令以在需要时加载其余位。通常不需要第二条指令,“小”值可能仍然有24位,这足以满足程序代码中的大多数数值。