我正在尝试使用 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 将其定义为数据部分
objdump -h main.o
main.o: 文件格式elf64-x86-64
部分:
Idx 名称 大小 VMA LMA 文件关闭 Algn 0 .stage1_main 0000001b 0000000000000000 0000000000000000 000001c0 2**0 内容、分配、加载、重新定位、只读、数据
我需要一段代码... 有没有办法将我的部分定义为代码部分(如 .text)
最佳答案
您可以让您的 section
指令明确声明该部分的内容是可执行的:
.stage1_main exec 部分
您可能还想坚持 16 字节对齐(nasm
会自动为 .text
部分执行):
section .stage1_main exec align=16
关于linux - 定义代码段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10849230/