一、電腦要完成兩數相加,可以大致分為如下幾個步驟: 1.從記憶體位置2000上把一個數字拷貝到寄存器1; 2.從記憶體位置2004上把另一個數字拷貝到寄存器2; 3.把寄存器2裡面的內容與寄存器1中的內容相加,把結果儲存在寄存器1中。 4.把寄存器1中的內容拷貝到記憶體位置2008。 二、高級語言以更抽 ...
一、電腦要完成兩數相加,可以大致分為如下幾個步驟:
1.從記憶體位置2000上把一個數字拷貝到寄存器1;
2.從記憶體位置2004上把另一個數字拷貝到寄存器2;
3.把寄存器2裡面的內容與寄存器1中的內容相加,把結果儲存在寄存器1中。
4.把寄存器1中的內容拷貝到記憶體位置2008。
二、高級語言以更抽象的方式描述行為,不受限於特定CPU或者指令集。
三、編譯器都聲稱提供完整的K&R實現,與大多數語言相比,C語言比其他語言更加依賴庫,因此需要一個標準庫,實際上由於缺乏官方的標準,UNIX實現提供的庫已成為了標準庫。
四、美國國家標準協會(ANSI)
C89:ANSI與1989年批准該標準。C90:ISO於1990年批准該標準。
C99\C11
五、C編譯器把源代碼轉換為中間代碼,鏈接器把中間代碼和其他代碼合併,生成可執行文件,鏈接器還將你編寫的程式和預編譯的庫代碼合併。
六、中間文件有多種形式,我們在這裡描述的最普遍的一種形式,即把源代碼轉換為機器語言代碼,並把結果放在目標代碼文件(或簡稱目標文件)中(這裡假設源代碼只有一個文件)。雖然目標文件中包含機器語言代碼,但是並不能直接運行該文件,因為該文件中存儲的是編譯器翻譯的源代碼,這不是一個完整的程式。
六、目標代碼文件中缺失啟動代碼(startup code),啟動代碼充當著程式與操作系統之間的介面,例如:可以在MS Windows或Linux 系統下運行IBM PC相容機,這兩種情況使用的硬體是相同的,所以目標代碼相同,但是Windows和Linux所需的啟動代碼是不同的,因為這些系統處理程式的方式不同。
七、目標代碼中還缺少庫函數,幾乎所有的C程式都需要使用C標準庫中的函數。
八、鏈接器的作用:把編寫的目標代碼、系統的標準啟動代碼和庫函數這三部分合併成一個問及那,即:可執行文件,對於 庫代碼,鏈接器只會把程式中要用的庫函數代碼提取出來。
九、源碼:
2.CSDN:https://blog.csdn.net/weixin_44630050
3.博客園:https://www.cnblogs.com/ruigege0000/
4.歡迎關註微信公眾號:傅里葉變換,個人賬號,僅用於技術交流,後臺回覆“禮包”獲取Java大數據學習視頻禮包