C連載2-編譯過程以及語言歷史概覽

来源:https://www.cnblogs.com/ruigege0000/archive/2020/05/22/12934590.html
-Advertisement-
Play Games

一、電腦要完成兩數相加,可以大致分為如下幾個步驟: 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大數據學習視頻禮包

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 今天我們來談談Web和前端開發過程中需要學習什麼?前端開發需要使用什麼開發工具?也簡單介紹前端開發前景和薪水。 前端工程師的主要職責: 前端工程師在不同的公司有不同的功能,但性質相似。 1、網站設計與網頁界面開發 2、做網站界面開發 3、Web界面開發,前端數據綁定,前臺邏輯 4、設計、開發、數據 ...
  • 【目錄】 一、jQuery操作標簽 二、jQuery綁定事件 一、jQuery操作標簽 1、操作類 class js版本 jQuery版本classList.add() addClass()classList.remove() removeClass()classList.contains() ha ...
  • 本篇文章 idea 來自 "用了這麼多年的泛型,你對它到底有多瞭解?" ,恰好當時看了「深入 Java 虛擬機的第三版」瞭解泛型的一些歷史,感覺挺有意思的,就寫了寫 Java 版的泛型。 作為一個 Java 程式員,日常編程早就離不開泛型。泛型自從 JDK1.5 引進之後,真的非常提高生產力。一個簡 ...
  • 本文記錄,如何使用 Word VBA,把文件中,長圖切割並拆分到多個頁中去。 問題背景: 最近在處理一個 Word 文檔,發現裡面有特別長的圖片,超過了頁面大小,導致列印的時候,根本無法列印整張圖片;然後發現,Word 中,根本沒有辦法,設置“圖片跨頁顯示”;而且在網上查了半天,也沒有好辦法;於是, ...
  • 從水仙花數引出自冪數,並做簡單的介紹,並不做深入的瞭解,同時使用C++代碼初略的實現9位數之內的自冪數輸出! ...
  • 1 簡介 眾所周知(你不知也當你知), 是以文檔( )組織數據的。除了常用於存儲 數據,它也是可以存儲普通文件的。我們可以把一些文件以 的格式存入 ,十分方便,比較說圖片、文本文件等。但 的`BSON Document 16MB MongoDB GridFS 16MB GridFS`存儲。 2 基本 ...
  • 【註】c++這塊的日誌類,很容易因為編譯環境設置字元集,參數類型等問題帶來一些不方便調用的問題。 那麼一開始可以在日誌中提供寬位元組類型的傳參處理。否則可能會部分情況下可以,部分情況下會丟失信息。 Log.h文件內容 #pragma once #include "stdio.h" #include " ...
  • 問題:控制台tomcat日誌亂碼,網站頁面亂碼 配置:idea2019.2、win10、tomcat8.5 字元集: idea2019.2 File Encoding UTF-8 win10 系統預設GBK tomcat8.5 UTF-8 控制台亂碼 1、將tomcat目錄下conf\logging ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...