我正在尝试构建一个小型操作系统。我有一个asm文件,它将处理器置于启用分页的64位模式下。之后,我跳到我的C代码。我希望将C代码和asm代码链接到同一文件中,但C代码的基地址为0xFFFFFF8000000000,而asm文件为0x5000。我如何用ld执行此操作。 这是我到目前为止的内容:
nasm -f elf64 os_init.asm -o ../bin/os_init.o
gcc -c -Os -nostdlib -nostartfiles -nodefaultlibs -fno-builtin vga/*.c utils/*.c *.c memory_management/*.c
ld -Ttext 0x5000 ../bin/os_init.o *.o -o ../bin/kernel.out
objcopy -S -O binary ../bin/kernel.out ../bin/kernel.bin
当前两个文件都以0x5000链接