这是GNU的汇编
xorl %eax, %eax(这句起什么作用)
按位异或,相同的位置为0,不同的位置为1,eax和eax的每一位都相同,所以相当于清零。
movl 8(%ebp), %ecx
testl %ecx, %ecx(这句起什么作用)
jle .L3
8(%ebp)是第一个参数,检验它的值,若小于等于0则转
xorl %eax, %eax(这句起什么作用)
按位异或,相同的位置为0,不同的位置为1,eax和eax的每一位都相同,所以相当于清零。
movl 8(%ebp), %ecx
testl %ecx, %ecx(这句起什么作用)
jle .L3
8(%ebp)是第一个参数,检验它的值,若小于等于0则转
其它的,看看GNU汇编的语法吧。
在汇编代码中经常看到
- xorl %edx, %edx
这个指令可以将寄存器 %edx 设置为 0,运用了对任意x,x^x = 0 这一属性。将寄存器 %edx 设置为 0 的更直接的方法是用指令 movl $0, %edx。使用 objdump 对比发现使用 xorl 的版本只需要 2 个字节,而是用 movl 的版本需要 5 个字节。
| ||||||||
| ||||||||
荣誉值:106 信誉值:0 注册日期:2007-06-26 15:10 | | |||||||
| ||||||||
荣誉值:9 信誉值:6 注册日期:2007-10-10 08:31 | | |||||||
| ||||||||
荣誉值:179 信誉值:6 注册日期:2007-07-09 19:18 | |