Я пытаюсь построить маленький ОС. У меня есть 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