我发现下面的汇编代码,我不知道它是什么应该做的事情(主要是因为cmovg遵循MOVL指令):解释汇编代码
pushl %ebp
movl %esp, %ebp
movl 8(%ebp), %edx
movl %edx, %eax
sarl $31, %eax
testl %edx, %edx
movl $1, %edx
cmovg %edx, %eax
popl %ebp
ret
因此,这里是如何我已经解释这么远: 推入堆栈
一个新的指针(堆栈指针)创建在相同的位置为基指针
获取输入到点(让我们称之为X)
拷贝x转换成寄存器%eax中(RES = X)
解析度= RES >> 31符号扩展
测试x
设置x = 1
如果>,RES = X
恢复指针
回报水库
但是,我不确定这个子程序的意义是什么。对我来说似乎没用。如果你能指出这里正在做什么,我将不胜感激。
你从哪里找到它的?应该给你一个线索是什么目的。 – 2012-04-18 11:31:19
在一个文档中连同大量的其他子程序是用来执行数学函数的。该文件没有注释,所以在这个意义上它是无用的。 – 2012-04-18 11:32:37
我猜测这是某种数学运算。但是这对我没有多大帮助。 – 2012-04-18 11:33:16