将简单的32位内核转换为64位(C + nAsm)

时间:2015-05-26 12:29:39

标签: c kernel nasm

我有一个用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无效。

0 个答案:

没有答案