NASM(或MASM)中“dd”指令在GNU汇编器(GAS)的等价写法是什么?
NASM/MASM
dd 指令转GNU汇编器(GAS)的写法 NASM/MASM 中的 dd 是用来定义**双字(4字节)**数据的指令,在GNU汇编器(GAS)中对应的是 .long 指令,以下是具体转换场景:
单值初始化
NASM/MASM 写法:my_var dd 0x12345678GAS 对应写法:
my_var: .long 0x12345678多值数组初始化
NASM/MASM 写法:my_array dd 1, 2, 0xDEADBEEFGAS 对应写法:
my_array: .long 1, 2, 0xDEADBEEF预留未初始化双字空间
NASM/MASM 中用dup预留空间的写法:my_buffer dd 10 dup(?)GAS 有两种等价实现方式:
; 方式1:用.skip指定总字节数(10个双字=40字节) my_buffer: .skip 40 ; 方式2:重复定义10个未初始化的.long my_buffer: .long 0,0,0,0,0,0,0,0,0,0
补充说明:GAS 中 .int 通常对应2字节数据(NASM的dw),.long 固定对应4字节,和 dd 完全匹配;64位环境下如果需要8字节数据,用 .quad 对应NASM的dq。
内容的提问来源于stack exchange,提问作者kamkow1
相关产品推荐
相关产品推荐

