簡體   English   中英

如何制作可啟動程序?

[英]How to make a bootable program?

所以,這個問題可能看起來很奇怪,但是讓我說我​​編譯:

int main(void)
{
    int x = 3;
    int y = 4;

    int z = x + y;
}

有可能讓CPU運行嗎? 怎么樣? 例如,這是否允許我寫入監視器? (如果我沒記錯的話,內存中有些地方可以寫東西來顯示。)

printf是關於最糟糕的C庫調用,它使用它在很多方向,浮點,字符串的東西,除法等等,避免它為這種事情。 我看到你還沒看過評論。

要查看正在運行的程序,您要在並行端口上閃爍LED或引腳,或者將字符從串行端口發送出去,這比編程顯卡中的寄存器和調試代碼要容易得多,無需查看是否正在制作進展。

現在使用x86,你有一個圖層,不是真正的操作系統,而是一個背后有這種代碼的圖層,你可以簡單地調用在文本模式下在屏幕上打印字符並查看程序運行。 我已經剝離了pcemu_samples,但完整的pcemu和dosbox以及其他x86仿真環境以及實際的計算機,都可以使用這些東西。 其中一個sim環境(dosbox,pcemu,etC)是一個更好的起點(如果你覺得你必須從x86開始,請注意這里的主題,我實際上是不鼓勵從x86開始)。 如果你做了x86,你可以從dosbox或類似的東西,然后以你的方式工作可能是一個可引導的USB棒,並從那里開始工作。

嵌入式處理器,其中有很多很多評估板,價格低於50美元,一些好的評估板低於20美元。 但是許多免費的模擬器可供您學習。 我有一些你可以嘗試,thumbulator,amber_samples,pcemu_samples可能是最穩定的(不太可能需要調試我的東西,主要調試你的東西),然后其他不太穩定,meecoate,msp430sim等等。$ 5將獲得你是msp430主板,10美元將為你獲得一個ARM cortex-m3主板,20美元會讓你太強大而不能稱為微控制器,微控制器主板(基於cortex-m4)。 更多的錢不會讓你更快或更好,但更多的選擇。 可以運行Linux的主板可以/會讓你想要學習的東西更加痛苦,保持在這個水平之下。

您的簡單示例需要很少,在編譯器為該函數創建的代碼之外,您只需要一條指令從復位向量分支到主函數的入口點。 理想情況下,您希望設置堆棧,最終可能為零.bss或copy .data等。只是學習使用工具(編譯器,匯編器,鏈接器)構建嵌入式二進制文件(即使您沒有運行的硬件/模擬器) )會告訴你(反匯編)如何連接reset和main之間的點(你不必稱之為main,你可以將它命名為你想要的任何東西,一些你不想稱之為主編譯器的編譯器會將額外的垃圾扔進去你的二進制)。

對於您的程序,除了啟動它之外,它不依賴於任何操作系統服務。 如果它是另外做輸入或輸出,它幾乎肯定依賴於操作系統來執行i / o。

如果您想用自己的代碼替換操作系統,那么您可以這樣做。 存在簡約的操作系統和程序加載器。 但是,是的,你需要學習很多東西。

這只是一個很長的故事,你需要熟悉匯編,你必須知道什么樣的划痕適合你的CPU類型,x86系列的裝配很有名,你可以通過學習它。

你會看到類似的東西:

Start:

mov AX ,0xff ;example 1
mov BX ,[CX] ;example 2
myString db 'Hi This is my First scratch',0 ;Print Example
call printFunc ;example 3 
jmp $

printFunc:
 mov ah, 0Eh ;This how you print on screen in Assembly
 loop
 lodsb
 cmp AX,BX
 je loop

等等.......

暫無
暫無

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

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