装配的尺寸优化

时间:2010-01-08 23:34:27

标签: optimization assembly x86

还有哪些其他优化(例如此处提供的优化`testl` eax against eax?可以应用以减少代码大小?

我特别感兴趣的是一线优化,例如使用测试eax,eax 而不是 cmp eax,0

感谢。

3 个答案:

答案 0 :(得分:2)

将常量有符号字节(-128到127)移动到寄存器可以与push和pop一起使用以节省几个字节。

6A09         push byte 9     ; Push byte 9 on stack
58           pop eax         ; Pop into 32-bit eax

这是与mov 5字节等效的

比较的三个字节
B809000000   mov eax, 9

答案 1 :(得分:0)

在不使用mov的情况下,可以更有效地将一些常量移动到寄存器中。例如,将零移动到rax:

xor eax, eax

或者将rax设置为1:

xor eax, eax
inc eax

可以使用eax(而不是rax),因为rax的上半部分被隐式清除(感谢评论)

答案 2 :(得分:-1)

我发现了另一个:

add eax, 1

替换为

inc eax