我似乎无法在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__设置回原始值.