我中遇到的兩種可能性是怎麼進位標誌可以進行設置:subq和cf如何協同工作?
0x00_00_00_00_00_00_00_00 - 0x80_00_00_00_00_00_00_00
(下劃線以示字節)
,如果這樣做是通過減法,我們就不得不借從一點我們沒有,這應該CF設置爲1
不過,我是個ALU不會減,而只是增加了兩個互補的印象。 0x80_00_00_00_00_00_00_00的二進制補碼是0x80_00_00_00_00_00_00_00。所以, 0x00_00_00_00_00_00_00_00 - 0x80_00_00_00_00_00_00_00不攜帶任何位了63位,這將設置CF爲0
以下哪種情況下是有效的在x86的64位值嗎?
是否ALU實際執行減法還是它轉換成2的補和轉化價值做減法?
感謝
你爲什麼不嘗試它? x86會減去,所以它會將CF設置爲1.一些體系結構確實使用CF進行減法運算。 – Jester
我不知道如何測試這個?我怎麼去看看結果?我在介紹系統類;一切都在C.我可以查看反彙編,但我不知道如何查看狀態寄存器?我可以編程一些東西來嘗試推斷髮生了什麼,但我很想知道如何實際查看標誌。 –
使用調試器。 '(gdb)p $ eflags'給出'$ 1 = [CF PF SF IF OF]'另外,如果你用C編碼,你爲什麼要關心標誌?編譯器會照顧他們...... – Jester