2011-08-20 72 views
3

我想創建一個簡單的操作系統,然而,當我編譯引導程序,我得到的錯誤:錯誤引導程序:幫助組裝

error: binary output format does not support external references 

我知道這個錯誤是什麼意思,但有可能在編譯爲二進制格式時創建外部引用?這是我的完整代碼:

;Bootloader.s 
[BITS 16]  
[ORG 0x7C00] 
global loader 
extern kmain 

loader: 
call kmain 
times 510-($-$$) db 0 
dw 0xAA55 

而且我的內核:

/*kernel.c*/ 
void kmain() 
{ 
    unsigned char *vidmem = (unsigned char *) 0xb8000; 
    int i 
    for(i=1;i<=11;i+=2) 
    { 
     vidmem[i]=0x07; 
    } 
    vidmem[0]='H'; 
    vidmem[2]='e'; 
    vidmem[4],vidmem[6]='l'; 
    vidmem[8]='o'; 
    videmem[10]='!'; 
} 

我怎麼編譯:

nasm -o '/home/myusername/Cubed OS/Bootloader.o' '/home/myusername/Cubed OS/Bootloader.s' 

回答

3

只能在那些鏈接的目標文件格式的外部引用。裸二進制不是,所以你不能直接這樣做。

(而你需要建立一個堆棧,然後才能AFAIK調用C函數)。

我看到的要對此三種方式:

+0

什麼格式可以有外部引用並使用「ORG」指令? – smilinggoomba