我正在將代碼從MASM移植到C內聯彙編程序(x86,Windows,MS VC) 愚蠢不是一個真正的代碼,只是欺騙以提供一個想法。比方說,我將一些數據定義爲靜態數組,甚至是兩個標籤之間的代碼塊,我需要獲取它的大小。Visual-C++內聯彙編程序的兩個偏移量的差異
label1:
bla bla bla
label2:
....
mov eax, (offset label2 - offset label1)
這樣的代碼在MASM就像一個魅力,但在CI收到以下錯誤消息: 「錯誤C2425:‘ - ’:在‘第二個操作數’非常量表達式」 我可以編譯:我希望編譯器在編譯時評估(偏移label1 - offset label2),但它看起來像我錯了。 當然,我可以得到 mov eax,offset label2 mov edx,offset label1 sub eax,edx 編譯後的,但是這只是用於計算常量的額外代碼。 有人可以解釋我,請問我的代碼有什麼問題?
它可能是由搬遷造成的?如何推動它?
期待一個答案, 謝謝。
你至少可以簡化一下:mov eax,offset label2; sub eax,offset label1; –