簡體   English   中英

使用OpenWatcom編譯並鏈接到C語言中的二進制簡單實模式操作系統

[英]Compiling and linking to binary simple real mode OS in C with OpenWatcom

我有一個用匯編語言編寫的簡單(極端簡單)實模式內核,我正嘗試盡可能多地移植到C。 為了做到這一點,我使用OpenWatcom編譯器進行16位二進制代碼。

在我的文件“ os.c”中,如果我將此行寫下來,它將起作用:

char msg[50];

但是如果我這樣做:

char msg[50] = "hello";

它只是不起作用。 每次我寫一個字符串,它都會被打斷。 我到處搜尋,嘗試了很多廢話,什么也沒做。

有人知道這可能是什么嗎?

我發布的鏈接不能超過2個,因此所需的所有4個鏈接都位於pastebin中。 提前致謝。

示例: http//pastebin.com/xz96N91A

我已經安裝了openwatcom,因此可以看到它的作用。 顯然這是一個很大的混亂,數據部分似乎應用在代碼中間。

我建議您改為創建一個COM格式文件。 至少看來可行。 我使用命令wcl -s -zls -0 -q -ms -bcl=com os.c來創建os.com ,以代替os.bin 我還已將加載程序中的遠跳轉更新為jmp far 0x0040:0x0100以解決com入口點的問題。 可能還需要設置一些段寄存器,但是對於此測試,它不需要這樣做。

我相信COM文件的限制為64k,不知道watcom是否強制執行該操作。 如果是這樣,並且您需要超過64k,則必須進行更多調查。

除非您真的被迫使用實模式,否則您可能不應該在其上浪費時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM