在 __asm 區塊中使用運算子
Microsoft 特定的
__asm
區塊無法使用 C 或 C++ 特定運算子,例如 << 運算子。 不過,C 和 MASM 共用的運算子,例如 * 運算子,會解譯為元件語言運算子。 例如,在區塊外 __asm
,方括弧 ( [ ] ) 會解譯為括住陣列下標,C 會自動調整為數組中的專案大小。 在 __asm
區塊內,方括號會視為 MASM 索引運算子,其會產生從任何資料物件或標籤 (不只是陣列) 的未縮放位元組位移。 下列程式碼將說明這項差異:
int array[10];
__asm mov array[6], bx ; Store BX at array+6 (not scaled)
array[6] = 0; /* Store 0 at array+24 (scaled) */
array
的第一個參考不會加以縮放,但是第二個會加以縮放。 請注意,您可以使用 TYPE 運算子,根據常數達到縮放比例。 例如,下列陳述式是相等的:
__asm mov array[6 * TYPE int], 0 ; Store 0 at array + 24
array[6] = 0; /* Store 0 at array + 24 */
END Microsoft 特定的
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應