osdev

    3熱度

    2回答

    我在使用GCC和ld.I'm寫作教育目的OS尋求幫助的,因爲缺少我的知識的專業人士連接C代碼,和我有編譯問題並鏈接C代碼。說實話,在沒任何問題,但我在輸出文件由GCC和LD喜歡 GCC: (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 symtab..strtab..shstrtab..text..eh_frame..data..comment .ELF..| 等

    3熱度

    1回答

    引導加載程序分爲2個階段。第一階段用匯編語言編寫,只加載第二階段,第二階段用C語言編寫。Stage1加載C語言中的代碼到地址0x0500:0,然後跳轉到那裏。 Stage2必須編寫「hello消息」並停止。 我嘗試不同的方式來起始地址設置爲原始二進制所作:(但沒有奏效) cc -nostartfiles -nostdlib -c stage2.c ld -s -T scrptfile.ld st

    4熱度

    2回答

    我在OS X上構建了一個x86_64-elf內核。我的構建系統是autotools。我成功編譯的gcc爲x86_64的小精靈在交叉編譯在OS X當我運行從自動工具生成的配置腳本我有一個問題: configure: error: C compiler cannot create executables See `config.log' for more details 所以我看config.l

    1熱度

    1回答

    我不知道這是如何爲交叉編譯工具鏈設置環境變量的正確位置。工具鏈的目的是開發操作系統。我正在使用Ubuntu 12.04 LTS。問題是我如何設置工具鏈的環境變量。交叉編譯工具鏈的路徑是 /home/Home/local 我希望能夠使用GCC交叉編譯工具鏈,但仍然能夠使用與Ubuntu附帶的GCC工具鏈。如果我不清楚,請隨時問我一些問題,或者如果您需要更多關於我想達到的信息。

    2熱度

    2回答

    我正在搞一些業餘愛好者操作系統開發,我對存儲器映射的I/O地址有點困惑。我理解整個內存映射I/O概念,但我想弄清楚開發人員如何獲取地址來操作硬件。 地址是由硬件供應商指定的,還是它們是所有計算機的某種標準地址?例如,用於文本打印的VGA存儲器從地址0xB8000開始。每個x86機器都是這個標準嗎?如果是這樣,誰來設定這個標準?例如,如果我想與以太網卡交談,我如何知道它用於通信的地址或端口? 在此先

    4熱度

    1回答

    我正在嘗試爲x86上的常規保護錯誤(GP#13)編寫ISR。我無法從INTEL文檔中找出如何找出導致異常的錯誤地址。我知道頁錯誤例外(GP#14)cr2寄存器保存錯誤地址。任何幫助表示讚賞。

    3熱度

    3回答

    至少在他/她的生活中至少有一次程序員,我正在嘗試創建我的「革命性」,即新的,唯一的操作系統。 :D 那麼,我正在使用一個虛擬仿真器(Oracle VM Virtual Box),爲此我創建一個新的unknwon操作系統,並帶有一個vmdk磁盤。我喜歡vmdk,因爲它們只是純文件,所以我可以將我的啓動加載器粘貼到虛擬硬盤的前512個字節。 現在,我正在嘗試讀取此虛擬磁盤的下一個扇區,我將在該扇區上粘

    14熱度

    2回答

    我正在編寫一個小內核,只是爲了在低層次的東西上徘徊一下。現在,它在Virtual Box中啓動,我可以在屏幕上顯示文本,分配一些內存以及其他非常基本的東西。它是用C++編寫的,有點asm。 有一個問題我想探索的東西背後的多任務機制。據我所知,它是這樣的: 內核初始化中斷描述符表,使中斷週期性發出(例如毫秒),並調用內核定義的程序。 當程序被調用,它可以決定設置的代碼/數據段和堆棧指針的那些另一個程

    0熱度

    1回答

    我一直在做操作系統開發(不是構建一個Linux內核),並且已經到了需要調試器的地步,用於我的最新操作系統。我已經嘗試過Bochs(在我的Win 7分區下),但那不能識別我的USB(它沒有格式化,我現在正在閱讀特定的行業),我寧願在Ubuntu 11.10下做些什麼。 是否有一個調試器可以讓我調試Ubuntu 11.10的自定義生成操作系統?

    2熱度

    3回答

    我正在開發OS開發課的作業項目。一個任務是在中斷時保存SSE寄存器的上下文。現在,保存和恢復上下文很簡單(fxsave/fxsave)。但我有測試問題。我希望把相同的樣本數據到寄存器中的一個,但我得到的是錯誤中斷6.這是代碼: // load some SSE registers struct Vec4 { int x, y, z, w; } vec = { 0, 1, 2, 3 }