簡體   English   中英

在64位中將AND指令與32位操作數一起使用

[英]Using AND instruction with 32-bit operand in 64-bit

我對64位模式下的AND指令有疑問。 我有本手冊告訴我,AND 32位立即數將被符號擴展為64位。 但是我做不到

和rax,0x80000000

我認為這很荒謬,因為0x800000是完美的DWORD操作數。 我可以接受的最高

和rax,0x7fffffff

那么這是怎么回事? 我不能使用MSb = 1對操作數進行符號擴展嗎? 如果是這樣,那么符號擴展應該如何針對操作數工作而又不能像在0x80000000中那樣使用它呢?

感謝您的答復。

“通過阻止人們做一些愚蠢的事情,您可能會阻止他們做一些聰明的事情”:一種由尊重和謙卑產生的態度; 您不知道所有的答案,所以請不要像傑斯特在評論中指出的那樣強加隨機性的愚蠢。

fwiw,gcc / gnu理解為:

and $0x80000000, %rax

宗教灌輸的lang聲堅持:

and $0xffffffff80000000, %rax

現在,很快,那里有足夠的f嗎? 這有助於提高可讀性嗎? 如果您不了解符號擴展名,那么您將要了解多少組裝?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM