关于您的代码中使用Section或[SECTION](带有方括号)之间的区别,我似乎无法在NASM文档中找到任何清晰的地方。我知道这些是宏,但是我看到它们几乎可以互换使用。是这样吗 换句话说是
[SECTION .text]
Run Code Online (Sandbox Code Playgroud)
相当于
Section .text
Run Code Online (Sandbox Code Playgroud)
?
括号是否暗示一些不可思议的副作用?
谢谢
[SECTION .xyz]是节指令的原始形式,它只是设置当前输出节,SECTION .xyz略有不同,因为它的工作方式类似于宏:
SECTION .text
Run Code Online (Sandbox Code Playgroud)
扩展到两行
%define __SECT__ [SECTION .text]
[SECTION .text]
Run Code Online (Sandbox Code Playgroud)
它可以与宏结合使用来临时切换输出部分,并将其切换回原始值。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
Run Code Online (Sandbox Code Playgroud)
当您使用此宏时,输出部分会.data通过 的原始形式临时设置为SECTION,并通过__?SECT?__
| 归档时间: |
|
| 查看次数: |
503 次 |
| 最近记录: |