定义代码部分

时间:2012-06-01 11:16:39

标签: linux assembly 64-bit nasm elf

我想用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)

1 个答案:

答案 0 :(得分:2)

您可以明确指出该部分内容可执行的section指令状态:

section .stage1_main exec

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

section .stage1_main exec align=16