Как связать 2 файла с разными начальными адресами с помощью ld - PullRequest
0 голосов
/ 29 апреля 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...