2012-06-01 41 views
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把它定義爲數據部

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,只讀,DATA

我需要一個代碼段... 有沒有辦法來定義我的部分作爲代碼段(如的.text)

回答

2

你可以讓你section指令明確規定,該部分的內容是可執行文件:

section .stage1_main exec

,你也可能要堅持16字節對齊(這nasm將爲.text部分自動完成):

section .stage1_main exec align=16