1

我正在尝试使用 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 CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA

我需要一个代码部分...有没有办法将我的部分定义为代码部分(如 .text)

4

1 回答 1

3

您可以section明确说明该部分的内容是可执行的:

section .stage1_main exec

并且您可能还想坚持 16 字节对齐(这nasm将自动为该.text部分执行):

section .stage1_main exec align=16

于 2012-06-01T11:27:17.850 回答