Gcc 跳转到ELF文件
我想写一个简单的引导程序。因此,我切换到保护模式,跳转到Gcc 跳转到ELF文件,gcc,assembly,x86,ld,elf,Gcc,Assembly,X86,Ld,Elf,我想写一个简单的引导程序。因此,我切换到保护模式,跳转到.code32并尝试跳转到ELF文件,由ld链接ld将.ELF(7F 45 4C…)放入文件的请求中。Bochs将其解释为+69指令,所以这不是我所哀叹的结果。如何将入口点放在文件的最下面 有一个链接器.ld脚本: ENTRY (boot) SECTIONS { .boot ALIGN(0x1000) : { bootstrap.o(.text) } .text ALIGN(0x1000) :
.code32
并尝试跳转到ELF文件,由ld
链接ld
将.ELF
(7F 45 4C…
)放入文件的请求中。Bochs将其解释为+69指令,所以这不是我所哀叹的结果。如何将入口点放在文件的最下面
有一个链接器.ld
脚本:
ENTRY (boot)
SECTIONS {
.boot ALIGN(0x1000) : { bootstrap.o(.text) }
.text ALIGN(0x1000) : { *(.text) }
.rodata ALIGN(0x1000) : { *(.rodata) }
.data ALIGN(0x1000) : { *(.data) }
.bss ALIGN(0x1000) : { *(.bss) }
}
为了执行ELF二进制文件,必须从文件中读取数据并进行相应的解释。有关这方面的说明,请参见
ELF是一个标头,其中包含有关文件的各个部分以及如何设置这些部分的信息。执行所有必要的步骤后,您可以跳转到入口点,该入口点也位于该标头中。为了执行ELF二进制文件,您必须从文件中读取数据并相应地解释它。有关这方面的说明,请参见
ELF是一个标头,其中包含有关文件的各个部分以及如何设置这些部分的信息。在完成所有必要的步骤后,您可以跳转到入口点,入口点也可以在该标题中找到。我使用C编写并使用gcc编译的主代码创建一个ELF文件 gcc-nostlib-nostartfiles-nodefaultlibs-fno内置-O0-c kernel.c 然后是另一个具有已知入口点的汇编代码[init.s](第一条指令位于第一个字节) C程序[kbhit(),getscan(),…]将使用一些“固件”函数,因为我们无法在保护模式下访问BIOS 使用nasm组装,也使用ELF: nasm-f elf init.s 然后将两者链接在一起,并将生成的文件存储在USB中MBR后的扇区中(您的MBR应该从USB读取文件,将其放入内存,进入保护模式,并将jumt存储到“kernel.bin”的第一个字节) ld-T kernel.ld-o kernel.bin init.o kernel.o 对象文件(.o)的顺序很重要,将init.o放在第一位 kernel.ld:
OUTPUT_FORMAT("binary")
ENTRY(start)
SECTIONS
{
.text 0x100000 : {
*(.text)
}
.data : {
*(.data)
}
.bss :
{
*(.bss)
}
}
希望这个帮助我曾经使用C编写的主代码和gcc编译的主代码创建过一个ELF文件 gcc-nostlib-nostartfiles-nodefaultlibs-fno内置-O0-c kernel.c 然后是另一个具有已知入口点的汇编代码[init.s](第一条指令位于第一个字节) C程序[kbhit(),getscan(),…]将使用一些“固件”函数,因为我们无法在保护模式下访问BIOS 使用nasm组装,也使用ELF: nasm-f elf init.s 然后将两者链接在一起,并将生成的文件存储在USB中MBR后的扇区中(您的MBR应该从USB读取文件,将其放入内存,进入保护模式,并将jumt存储到“kernel.bin”的第一个字节) ld-T kernel.ld-o kernel.bin init.o kernel.o 对象文件(.o)的顺序很重要,将init.o放在第一位 kernel.ld:
OUTPUT_FORMAT("binary")
ENTRY(start)
SECTIONS
{
.text 0x100000 : {
*(.text)
}
.data : {
*(.data)
}
.bss :
{
*(.bss)
}
}
希望有此帮助您不能直接跳转到ELF文件的第一个字节。您需要解释ELF文件,根据其中的描述设置适当的段,找到适当的入口点,然后跳转到该入口点。您能给一个指向ELF的简单解释器(解析器)的链接吗?您不能只跳转到ELF文件的第一个字节。您需要解释ELF文件,根据其中的描述设置适当的段,找到适当的入口点,然后跳转到该入口点。您能给一个指向ELF的简单解释器(解析器)的链接吗?