给出以下代码:
int x=4;
int g=2;
int z=x/g;
据我所知,值'4'存储在内存中属于x
的位置,'2'存储在内存中g
的位置。
现在,当CPU获得z=x/g
命令时,首先他从内存中获取x
和g
的值,然后计算结果,并将其存储在{{1 }}。
但是当下面的代码运行时会发生什么:
z
CPU获得'4'后,如何获得'2'? CPU命令可以保存数据而不是地址和操作码吗?
答案 0 :(得分:2)
你可以通过对此进行编码并查看反汇编来照亮自己。无论如何 - 2存储在寄存器中,以及4中。然后执行操作。
答案 1 :(得分:0)
许多CPU命令都可以嵌入数据。这被称为“立即操作数”。但是,很少有一个以上的数据。 CPU架构和个人命令的细节差异很大。
由于命令本身驻留在内存中,从技术上讲,在CPU命令中嵌入数据项仍然算作“内存中的数据”。对于记录,地址也是一种直接操作数。对于CPU,它只是另一个数字。
具体除以2通常通过右移1次操作(按位或算术,取决于)来实现。在我知道的所有CPU上,shift命令可以将shift-by操作数存储为立即数。