MASM 運算式評估與 C++ 運算式評估之間最顯著的差異如下:
在 MASM 運算式中,任何符號的數值都是其記憶體位址。 在 C++ 運算式中,變數的數值是其實際值,而不是其位址。 資料結構沒有數值。 相反,它們被視為實際結構,您必須相應地使用它們。 函式名稱或任何其他進入點的值是記憶體位址,並被視為函式指標。 如果您使用不對應於 C++ 資料類型的符號 (例如未修改的模組名稱) ,則會發生語法錯誤。
MASM 運算式評估器會將所有數字視為ULONG64值。 C++ 運算式評估器會將數字轉換成ULONG64並保留所有資料類型的類型資訊。
MASM 運算式評估器可讓您將任何運算子與任何數字一起使用。 如果您將運算子與不正確的資料類型一起使用,則 C++ 運算式評估器會產生錯誤。
在 MASM 表達式評估器中,所有算術都是按字面意思執行的。 在 C++ 運算式評估器中,指標運算會適當地進行比例縮放,而且在不適當的情況下不允許執行。
MASM 運算式可以使用兩個底線 ( __ ) 或兩個冒號 ( :: ) 來指出類別的成員。 C++ 運算式評估器只會使用雙冒號語法。 偵錯工具 輸出 一律會使用兩個冒號。
在 MASM 運算式中,您應該在所有暫存器前面新增一個「@」符號,最常見的暫存器除外。 如果您省略 at 符號,則暫存器名稱可能會解譯為十六進位數或符號。 在 C++ 運算式中,所有暫存器都需要這個前置詞。
MASM 運算式可能包含對原始程式碼行的參考。 這些參考文獻由撇音符(`)表示。 您無法在 C++ 運算式中參考原始碼行號。