我發現下面的彙編代碼,我不知道它是什麼應該做的事情(主要是因爲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