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名前サイズVMALMAファイルオフAlgn0.stage1_main 0000001b 0000000000000000 0000000000000000 000001c0 2 ** 0 CONTENTS、ALLOC、LOAD、RELOC、READONLY、DATA

コードセクションが必要です...セクションをCODEセクション(.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 に答える