Re: [問題] 用C連結 ASM進入保護模式的副程式會當機
※ 引述《SILee (打卡上班的日子)》之銘言:
: ※ 引述《typeotoco (打字男)》之銘言:
: : 我單獨使用 masm compile 一個進入保護模式的asm程式 能正常做動
: : 後來我想寫成副程式讓 C 去 call,但是只要一設定保護模式的 bit
: : 就會當機。一直不知道怎麼辦,不知道有沒有人可以給我建議。
: : 或是有人有空可以幫我看一下?
: : 我直接把 start 的部分改成 MemSetting 這個函數了。
: : http://rafb.net/p/aS7Oy058.html
: : 當在最下面的地方
: : 先謝謝了
: 這幾天在寫開機檔時我也碰到了這個問題
: 我的程式在VirtualBox和QEMU下做模擬都沒有問題,可以正常地執行
: 可是只要拿到實體PC上做測試
: 開機後跑到寫入cr0這條指令,switch到protect mode後電腦就會自動重新開機
: movl %cr0, %eax
: orl $1, %eax
: movl %eax, %cr0
: 到現在我還搞不清楚原因,不知道ASUS在BIOS裡動了什麼手腳
搞了快兩個禮拜,今天終於被我找到原因了 = ="
我在程式一開始的時候有下cli把interrupt關掉
可是在執行一些software interrupt後interrupt又被打開了
而在剛switch到protect mode時,我還沒有把IDT建好
所以這時候只要一收到timmer來的interrupt系統就當掉了
在QEMU的模擬環境中並不會發生這種現象,所以在QEMU上測試的時候都不會有問題
但只要把程式一放到實體PC上跑就出問題了
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.59.105.115
推
04/27 11:34, , 1F
04/27 11:34, 1F
→
04/27 11:34, , 2F
04/27 11:34, 2F
推
04/27 11:50, , 3F
04/27 11:50, 3F
→
04/28 01:10, , 4F
04/28 01:10, 4F
推
04/28 04:43, , 5F
04/28 04:43, 5F
→
04/28 04:50, , 6F
04/28 04:50, 6F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
ASM 近期熱門文章
PTT數位生活區 即時熱門文章