2

我从来没有在汇编中写过任何长程序。但从我肤浅的经验来看,它似乎并不像人们想象的那么难。

我唯一不能完全理解的是:如何实际执行寄存器分配?虽然在 x86 中没有太多空间,但 x64 和 RISC 设计(AVR、ARM)为您提供了大量的寄存器。

汇编程序员如何选择哪些变量应该保留在寄存器中,何时将它们从/传输到内存,最后,他们如何跟踪每个变量?

4

1 回答 1

3

汇编程序员如何选择哪些变量应该留在寄存器中

由于寄存器(几乎总是)比内存访问快,因此经常使用(读取或写入)的变量通常应该进入寄存器。一个例子是循环的索引变量。

一个反例是您将获取地址的变量。这应该进入内存,因为您(通常)不能获取指向寄存器的指针。

何时将它们从/转移到内存

不要,除非绝对必要。

最后,他们如何跟踪每个变量?

几乎不。玩笑不谈,频繁的注释、一致的命名和寄存器分配约定、使用某种宏处理器(汇编器拥有一个或 C 预处理器)和严格的编码通常会使事情变得更容易一些。

于 2014-07-27T20:53:33.973 回答