NASM特定 - 部分vs [部分]

时间:2011-05-08 05:31:38

标签: assembly nasm

我似乎无法在NASM的文档中找到有关在代码中使用Section或[SECTION](带括号)之间区别的任何内容。我知道这些是宏,但我看到它们几乎可以互换使用。是这样的吗?换句话说是

[SECTION .text]

相当于

Section .text

括号可能意味着某些神秘的副作用吗?

由于

1 个答案:

答案 0 :(得分:2)

[SECTION .xyz]是section指令的原始形式,它简单地设置当前输出节,“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

当您使用此宏时,输出部分暂时由原始形式的SECTION设置为.data,并使用 __ SECT <设置回原始值强> __