2011-05-08 30 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设置回其原始值__