(使用X86指令集與AT & T語法。)彙編符號比較
我目前正在開發一個程序,找出long
值列表中的最小值。
值分配如下
data_items: .long 13,-5,-8,4,-120
說我有是值的比較,因爲他們可能是負面的問題。我正在查看我的data_items作爲有符號值,在stackoverflow上的一些答案使用jg
- 如果提出更大的跳轉。但它不適合我,或者我可能會錯誤地使用它。
我寫了一個小的 「測試」
movl $-7, %ebx #write -7 to register ebx
movl $2, %ecx #write 2 to register ecx
cmpl %ebx, %ecx #compare -7 and 2
jl end_loop #if -7 is less than 2, jump
movl $77, %ebx # move 77 to register ebx
end_loop:
結果(寄存器%EBX)應爲-7(或實際上是249,因爲它的兩個互補的),但它是77
如何可以比較有符號值嗎?我是否必須確定他們是否簽名,記住這一點,並且如果他們在比較之前簽名否定他們?
x86爲無符號比較提供了jmp指令集,並對簽名進行比較。你需要查找jmp操作碼並查看哪些是用於簽名比較的。 –
順便說一句,-7將是4294967289,而不是249。你有那裏的dwords。 – harold
@harold你是對的,因爲我正在使用一個長數據類型。但是我感到困惑,因爲當我做「回聲$?」時我得到249回來,這是8位視圖中的-7補碼。也許它削減了領先的零? – ch1ll