0

给定以下代码:

int x=4;
int g=2;
int z=x/g;

据我所知,值“4”存储在内存中属于的位置x,“2”存储在g内存中的位置。现在,当 CPU 收到z=x/g命令时,他首先从内存中获取 和 的值xg然后计算结果,并将其存储在z. 但是当以下代码运行时会发生什么:

int x=4;
int z=x/2;

CPU得到'4'后,他怎么能得到'2'呢?CPU命令可以保存数据而不是地址和操作码吗?

4

2 回答 2

2

您可以通过编写代码并查看反汇编来照亮自己。无论如何 - 2 和 4 都存储在寄存器中。然后执行操作。

于 2013-04-03T18:26:31.193 回答
0

许多 CPU 命令可以具有嵌入式数据。这称为“立即操作数”。但是,很少有超过一个数据。详细信息因 CPU 架构和单个命令而异。

由于命令本身驻留在内存中,从技术上讲,将数据项嵌入到 CPU 命令中仍然算作“内存中的数据”。为了记录,地址也是一种立即操作数。对于 CPU 来说,这只是另一个数字。

具体除以二通常通过右移 1 操作(按位或算术,取决于)来实现。在我知道的所有 CPU 上,移位命令可以将移位操作数存储为立即数。

于 2013-04-03T21:13:57.017 回答