我有一个用Nasm for i386编写的简单加载器
bits 32
section .text
align 4
dd 0x1BADB002
dd 0x00
dd - (0x1BADB002 + 0x00)
int 16
extern _run
global _start
global start
_start:
start:
call _run
ret
我使用nasm -f elf32 -o xyz.o xyz.asm
进行编译,使用gcc -m32 -o abc.o abc.c
编译C文件并将其与ld -m elf_i386 -o kernel.bin xyz.o abc.o
相关联。当我在qemu-system-i386 -m 64 -vga cirrus -kernel kernel.bin
中运行时,一切运行良好,但是如何将其移植到64位机器上?
我可以使用nasm -f elf64 -o xyz.o xyz.asm
编译所有文件并gcc -m64 -o abc.o abc.c
+链接它们,但我只是在qemu-system-x86_64
上显示黑屏。
PS:将bits 32
修改为bits 64
并将对齐设置为8无效。