装配 – NASM特定 – 部分vs [部分]

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

[SECTION .text]

相当于

Section .text

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

谢谢

最佳答案 [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__设置回原始值.

点赞