【发布时间】:2011-01-22 14:11:33
【问题描述】:
我有一个关于装配的基本问题。
如果寄存器也可以在内存上工作,为什么我们还要费心只对寄存器进行算术运算?
例如,以下两个原因(本质上)将相同的值计算为答案:
片段 1
.data
var dd 00000400h
.code
Start:
add var,0000000Bh
mov eax,var
;breakpoint: var = 00000B04
End Start
片段 2
.code
Start:
mov eax,00000400h
add eax,0000000bh
;breakpoint: eax = 0000040B
End Start
据我所知,大多数文本和教程主要在寄存器上进行算术运算。使用寄存器会更快吗?
编辑:那很快 :)
给出了一些很好的答案;最佳答案是根据第一个好的答案选择的。
【问题讨论】:
-
我不是专家(因此仅发表评论),但由于寄存器是 CPU 内部的,因此比内存操作更快。速度不是仅仅 1000 倍的小幅度,而是在很大程度上更快。
-
一些(通常是 RISC)架构没有具有直接操作内存地址内容的算术指令,因为实际上它们很少使用。 (当然,x86 拥有它们,以及所有其他可能的奇怪特性,因为它是疯狂的旧 x86。)
标签: performance assembly cpu-architecture cpu-registers