0

我一直在阅读例如 32 位微处理器架构。我有一个简单的问题:如果浮点数的最大位数是 32 位,那么该数字如何进入微处理器进行处理?它可以作为机器语言指令的一部分吗?因为如果答案是肯定的,它是否必须构成整个机器语言指令(换句话说,控制位或操作码或其他任何东西都没有空间,因为所有 32 位都将用于数字本身)。是不是它实际上是如何完成的,即是否有一个机器语言命令说“注意CPU:你将阅读的下一个机器语言命令实际上不是一个命令;它实际上是一个数字”。

或者,是否所有输入计算机的“数据”都必须单独输入,而不是作为机器语言指令的一部分?

特别是,我想知道英特尔微处理器如何处理这个问题。

4

3 回答 3

0

我的程序集有点生疏,但我记得有用于指令的特定寄存器和用于数据的特定寄存器。因此,您实际上会将下一个数据项移动到相关寄存器中,然后将所需的指令推入 AX(?) 寄存器。

但是,我警告 - 我上次写汇编是在 2004 年......

于 2013-01-23T09:35:02.207 回答
0

CPU 上的所有数据都通过中央总线或其他通道传输。数据要么存储在内存中,要么存储在缓存中,尽管缓存中没有太多空间。假设您使用 inc eax;命令,inc 本身就是从 RAM 中获取的信息。问题是,有像上面这样的内部 cpu 命令,其中 EAX 会增加。然后是需要外部数据的命令。对于这些命令,指令的一部分是地址本身。在后来的 Intel cpus 中,可以在指令本身中添加一个操作数,因为它更小。指令中的地址要么是指向你需要的数据的指针,要么是指向你需要的数据的指针。

最重要的是,CPU 寻找指令。如果它启动的第一件事不是指令,cpu 仍然会将它视为一个数字,这会搞砸一切。

例如:假设我们有一个 8 位 CPU,内存中首先加载到 cpu 中的应该是一条指令,所以假设它得到 01001010,那么操作码是 01,(add 或 we),然后是指令将我们在地址 001010 添加到累加器

该死的我很讨厌解释这个

于 2013-01-28T07:18:39.097 回答
0

通常,机器语言指令可以由多个单词组成。所以一个字是指令的下一个字或多个字是相关的立即数数据(要放入寄存器的值,或要操作的内存地址)。这就是CISC 处理器上的工作方式,例如 Intel x86 相关架构。

但是你在做某事。在RISC体系结构中,每条指令都是一个字是很常见的。在这种情况下,要加载 32 位值,需要两个指令。换句话说,有一个单字指令来加载具有较少位的值,然后在需要时再有另一个单字指令来加载其余位。很多时候不需要第二条指令,“小”值可能仍然有 24 位,这对于程序代码中的大多数数值来说已经足够了。

于 2013-01-28T07:27:01.703 回答