[英]long long initialization and 8 bytes plateform
我很驚訝地發現,在調試模式下關閉優化的調試模式下,以x64平台為目標的MSVS2012,無法在一條指令中進行long long
初始化:
; long long l1 = 1;
mov DWORD PTR _l1$[ebp], 1
mov DWORD PTR _l1$[ebp+4], 0
因為寄存器是8個字節,所以我希望有一條指令能夠執行此操作...是否有一個?
在針對x64的快速控制台模式項目中嘗試此操作,然后在“反匯編”窗口中查看:
long long l1 = 1;
000000013F151035 mov qword ptr [rsp],1
定位x86時使用相同的代碼:
long long l1 = 1;
010213EE mov dword ptr [l1],1
010213F5 mov dword ptr [ebp-8],0
灌籃高手,您實際上並不是在看程序的x64構建。 使用Build + Configuration Manager修復此問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.