【问题标题】:define code section定义代码段
【发布时间】:2012-06-06 15:11:21
【问题描述】:

我正在尝试使用 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 内容、分配、加载、重新定位、只读、数据

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

【问题讨论】:

    标签: linux assembly 64-bit nasm elf


    【解决方案1】:

    您可以使您的 section 指令明确声明该部分的内容是可执行的:

    section .stage1_main exec

    您可能还想坚持 16 字节对齐(@9​​87654323@ 将自动为 .text 部分执行):

    section .stage1_main exec align=16

    【讨论】:

      猜你喜欢
      • 2012-12-18
      • 2020-10-14
      • 2011-06-10
      • 1970-01-01
      • 2011-10-04
      • 2011-08-05
      • 2012-02-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多