9
A
回答
12
%define
是一種更強大的宏執行方式,類似於C預處理器。在你簡單化的情況下,沒有太大的區別,在源代碼中使用x
將導致替換常量3
。 equ
語句在初次讀取時會進行一次評估,並在源中遇到%define
宏時進行評估,這兩者之間存在細微差別。
你可以看到區別有兩個說法之間的片段:
addr equ $
%define addr $
在這種情況下,addr
,在代碼中遇到時,會有不同的值。在第一種情況下,$
將是equ
所在位置的裝配位置的位置。換句話說,它定義的是。
在第二種情況下,它使用addr
爲的地方評估裝配位置。
哪裏%define
閃耀是這樣的:
%define thricexplusy(x,y) (3 * x + y)
或:
%define ctrl(c) (c & 0x1F)
: :
mov al, ctrl('z')
(甚至是相當複雜的東西),它允許您將參數傳遞到您的宏,什麼不可能用簡單的equ
。
相關問題
- 1. NASM中equ和db有什麼區別?
- 2. MIPS中.word和.equ有什麼區別?
- 3. C中#define和'='有什麼區別?
- 4. FunctionDefHelper :: Create和FunctionDefHelper :: Define有什麼區別?
- 5. define('MENU_IS_ROOT',0x0001)和define('MENU_IS_ROOT',1)之間有什麼區別?
- 6. RequireJS中的define和require有什麼區別?
- 7. (define(deriv-squared f)(proc(deriv f)))和(define deriv-squared(proc deriv))有什麼區別?
- 8. 有什麼區別`和$(Bash中有什麼區別?
- 9. #Define和Float的區別?
- 10. MASM shellcode和NASM shellcode是否有區別
- 11. NASM中「section」和「segment」的區別
- 12. 有什麼區別? :和||
- 13. &&和||有什麼區別?
- 14. 「/」和「/ *」有什麼區別?
- 15. 有什麼區別:。!和:r!?
- 16. ==和===有什麼區別?
- 17. Appender和〜有什麼區別?
- 18. $ @和$ *有什麼區別?
- 19. is和=有什麼區別?
- 20. #.00和#。##有什麼區別?
- 21. `==`和`is`有什麼區別?
- 22. '=='和'==='有什麼區別?
- 23. /和/#/有什麼區別?
- 24. | 0和~~有什麼區別?
- 25. `&`和`ref`有什麼區別?
- 26. ==和===有什麼區別?
- 27. ==和===有什麼區別?
- 28. `{}`和`[]`有什麼區別?
- 29. JavaScript和=== ===有什麼區別?
- 30. difftime和' - '有什麼區別?