use*_*545 7 x86 assembly cpu-registers
大多数汇编程序利用4个通用寄存器eax ebx ecx edx
,但我发现,很多时候我需要使用超过4个寄存器来轻松地完成我的任务,而不必push
和pop
从堆栈得多.由于我的程序无意使用FPU或MMX寄存器进行浮点计算或"预期用途",在程序中使用这些额外的寄存器是否可以接受?
例如.使用xmm0
一个循环递增计数器腾出ecx
寄存器做其他事情.
为什么是四个?您可以使用所有这些:eax
、ebx
、ecx
、edx
、esi
和edi
。ebp
那是七个。或者这还不够?
FPU 和 MMX 寄存器使用起来有些尴尬,因为它们只能从自身和内存加载,并且只能存储到自身和内存。您无法在它们和通用寄存器之间自由移动数据,也没有能够同时对两种寄存器进行操作的指令。
如果七个通用寄存器不够,请使用本地/堆栈变量。例如,您可以直接递减内存中的计数器变量,也可以直接将其与常量或另一个寄存器进行比较。有可能,这不会比以奇怪的方式使用 FPU 或 MMX 寄存器慢(可能更快)。
归档时间: |
|
查看次数: |
852 次 |
最近记录: |