我想寫一個簡單的代碼(或算法)來設置/清除溢出標誌。你可以幫我嗎?如何在x86程序集中設置溢出標誌?
回答
要設置(在MASM語法)
pushf ; mov EFLAGS to stack
bts dword ptr [esp], 11 ; set OF flag
popf ; write it back to status register
的Overflow flag(OF) - Bit 11 of EFLAGS使用和分別使用以下方法來標誌復位:作爲副作用
pushf ; mov EFLAGS to stack
btr dword ptr [esp], 11 ; reset OF flag
popf ; write it back to status register
帶有內存目的地的'or'或'and'比'bts更少uops [mem],imm'在Intel CPU上。即使立即進行位計數,具有內存目標的'bts'和朋友效率也不高,所以一般情況下要避免使用內存操作數,而不是需要原子('lock')測試和設置。 –
許多指令明確OF
,例如test
。因此,您可以編寫類似test eax, eax
的東西,並且將清除OF
,但它會影響其他標誌。你沒有說明是否允許。
要設置OF
,您可以執行一些操作來設置它。例如,加1的最大正數:mov al, 0x7f; add al, 1
或者,可以使標誌的副本使用pushf
在棧上,對其進行修改,以自己的喜好,然後使用popf
找回來。
您應該考慮在此刪除您的答案並將其移至副本。或者標記這個問題並要求版主將其所有答案合併到副本中。 –
- 1. 如何設置或清除x86程序集中的溢出標誌?
- 2. x86程序集:INC和DEC指令和溢出標誌
- 3. 設置溢出標誌
- 4. 如何在程序集中爲ATmega328p設置定時器溢出?
- 5. x86如何硬件檢測和設置溢出寄存器標誌
- 6. 瞭解程序集中的符號和溢出標誌
- 7. 在x86程序集中,如何在不進行比較操作的情況下設置零標誌(ZF)?
- 8. 如何設置裝配語言中的溢出條件X86
- 9. 如何確定何時設置了零標誌,符號標誌,溢出標誌和進位標誌?
- 10. 如何使用溢出設置圖標
- 11. 在彙編語言中設置NEG指令設置溢出標誌
- 12. 而如果在x86程序集中
- 13. 如何在WinGhci中設置標誌,Haskell
- 14. 如何在Eclipse中設置jvm標誌
- 15. 如何在c中設置REG_KEY_DONT_VIRTUALIZE標誌#
- 16. 如何在ngCookies中設置httpOnly標誌?
- 17. 如何在內聯程序集中設置標籤?
- 18. 程序集x86 movsb
- 19. 堆棧溢出時,將-pie標誌設置爲gcc
- 20. 負狀態標誌N是否也設置了溢出?
- 21. ROR接通溢出標誌
- 22. 如何檢測裝配過程中的溢出情況Langauge X86
- 23. 如何設置零標誌
- 24. 如何設置FOUND_ROWS標誌?
- 25. Linux x86-64中的日誌庫bx程序集
- 26. 爲什麼CMP(compare)有時會在8086程序集中設置進位標誌?
- 27. 在x86程序集中掃描數組
- 28. 在x86程序集中複製x64 MOVQ
- 29. 在程序集x86中將字符打印到標準輸出中
- 30. 將x86轉換爲x86-64程序集
http://stackoverflow.com/questions/1406783/flags-registers-can-we-read-or-write-them-directly – ABuckau