我非常非常新的彙編語言程序設計,目前我正在閱讀組裝從二進制生成的語言。我碰到過
test %eax,%eax
或test %rdi, %rdi
等等等等。我對這件事很困惑。 %eax, %eax
中的值是不是相同?它是什麼測試?我在某處讀到它正在執行AND
操作.....但是由於它們的值相同,是不是隻返回%eax
?
下面就是一個例子,我發現這種用法:
400e6e: 85 c0 test %eax,%eax
400e70: 74 05 je 400e77 <phase_1+0x23>
我想如果進行比較的兩個值相等je
跳躍......好,因爲%eax
很好,本身,在什麼情況下我們不會跳?
我是一般的初學者,所以如果有人能向我解釋這一點,我會非常感激。謝謝!
由於有些答案看起來有點不清楚,讓我指出'TEST'除了'ZF'外還更新了其他標誌。請參閱指令集參考。 – Jester
@Jester修復了(在我的回答中),對不起。 –
另一個可能的重複:?什麼是'test'指令做(http://stackoverflow.com/q/6002079) – jww