我想用Nasm汇总以下代码:
section .stage1_main
extern stage1_get_stage2_addr
global stage1_main
stage1_main:
sub rsp, 0x8
call stage1_get_stage2_addr
cmp rax, -1
jz error
add rsp, 0x8
push stage1_main
jmp rax
error:
ret
.stage1_main是我定义的新部分。问题是Nasm将其定义为DATA部分
objdump -h main.o
main.o:文件格式elf64-x86-64
节数:
Idx名称大小VMA LMA文件关闭Algn 0 .stage1_main 0000001b 0000000000000000 0000000000000000 000001c0 2 ** 0 内容,ALLOC,LOAD,RELOC,READONLY,数据
我需要一个代码部分...... 有没有办法将我的部分定义为CODE部分(如.text)
答案 0 :(得分:2)
您可以明确指出该部分内容可执行的section
指令状态:
section .stage1_main exec
并且您可能还希望坚持16字节对齐(nasm
将自动执行.text
部分):
section .stage1_main exec align=16