2011-05-08 32 views
4

我似乎無法在NASM文檔中找到有關在代碼中使用Section或[SECTION](與括號)之間區別的任何內容。我知道這些是宏,但我幾乎可以互換地看到它們。是這樣嗎?換句話說就是NASM特定 - 部分與[部分]

[SECTION .text] 

相當於

Section .text 

括號可能意味着一些神祕的副作用嗎?

由於

回答

2

[SECTION名爲.xyz]爲部分指令,它簡單地將當前輸出部分的原始形式, 「SECTION名爲.xyz」 稍微因爲它像一個宏不同:

SECTION .text 

擴展到兩行

%define __SECT__ [SECTION .text] 
[SECTION .text] 

其可以結合使用與宏臨時切換輸出部,並切換回其原始值。從NASM手冊例如:

%macro writefile 2+ 

[section .data] 

%%str:  db  %2 
%%endstr: 

    __SECT__ 

    mov  dx,%%str 
    mov  cx,%%endstr-%%str 
    mov  bx,%1 
    mov  ah,0x40 
    int  0x21 

%endmacro 

當使用該宏,則輸出部被設定爲部分的原始形態暫時。數據,並用__SECT設置回其原始值__