用c语言先编写一个死循环 main.c
int main(void) {
while(1);
return 0;
}
编译该文件
gcc -c -o main.o main.c
-- Ttext参数表示起始虚拟地址为0xc0001500 -e参数表示程序入口地址
ld main.o -Ttext 0xc0001500 -e main -o kernel.bin
-- 将kernel.bin写入第9个扇区
dd if=/home/truthos/oscode/c5/c/kernel/kernel.bin of=/home/truthos/bochs/hd60M.img bs=512 count=200 seek=9 conv=notrunc
nasm -f elf -o lib/kernel/print.o lib/kernel/print.S
gcc -I lib/kernel/ -c -o kernel/main.o kernel/main.c
ld main.o -Ttext 0xc0001500 -e main -o kernel.bin kernel/main.o lib/kernel/print.o
objdump -S ../kernel/kernel.bin
查看程序的汇编代码。
运行bochs虚拟机,程序也执行到了c代码。