我从未在汇编中写过任何长篇程序。但是从我肤浅的经历来看,它似乎并不像人们看起来那么难。
我唯一能够完全理解的是:一个人如何实际进行寄存器分配?虽然在x86中没有太多空间,但x64和RISC设计(AVR,ARM)为您提供了大量的寄存器。
汇编程序员如何选择哪些变量应该保留在寄存器中,何时从/向存储器传输?最后,他们如何跟踪每个变量?
答案 0 :(得分:3)
汇编程序员如何选择哪些变量应保留在寄存器中
由于寄存器(几乎总是)比存储器访问更快,因此频繁使用(读或写)的变量通常应该进入寄存器。一个例子是循环的索引变量。
反例是您将获取地址的变量。这应该进入内存,因为你不能(通常)抓住指向寄存器的指针。
何时从/向内存传输
除非绝对必要,否则不要。
最后,他们如何跟踪每个变量?
几乎没有。除了笑话,频繁的评论,一致的命名和寄存器分配约定,使用某种宏处理器(汇编程序拥有一个或C预处理器)和规范编码通常会使事情更容易