吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

編程語言的加載和執行過程

CHANBAEK ? 來源: 數殼智學 ? 作者: 赤靈 ? 2023-10-31 10:13 ? 次閱讀

上一章著重講了指令,我們用匯編C語言等工具編寫的代碼最終也被轉化成機器指令被執行。本章進一步闡述編程語言如何被加載和執行的過程。

6.1.一段程序代碼

我們給出一段類似C語言的代碼,作為本書電路的“hello world”程序,看看電路之間如何配合才能完成執行這個代碼的目標。

試著分析這3行代碼:

1、a=6,a在高級語言中是一個變量,其本質是一個內存地址;a=6的意思是在a地址的內存空間中存入數字6;本章為了講解過程進一步簡化,假設這兩句已經執行完畢。

2、c=a+b,首先把a和b的內存空間中的數字,用加法器加起來,得到一個結果值9,然后把9存儲到c這個地址的內存空間中。

圖片

圖 6-1 本章代碼內存示意圖

指令操作碼指令地址說明
0000 00000000 1100讀取被加數a的值到加法站暫存器
0000 00010000 1010從內存讀取加數,并相加
0000 00100000 1101將相加的結果存儲內存

6.2.程序執行控制

從上一章詳細闡述了指令寄存器從內存中取出代碼指令,然后控制指令的執行。但是他只負責具體執行一條指令,給它什么指令,它就去完成,可見背后還應該有一個“指揮棒”,把需要執行的指令給指令寄存器,等他執行完成后,把下一個指令給它。

需要設計一個程序執行控制模塊,來做這個“指揮棒”,我們來試著分析它如何工作。

如圖 6-1,內存被分成代碼區和數據區兩部分,代碼區從內存的0000 0000位置開始。根據我們的電路設計,指令的格式是8位的操作碼加上8位的操作地址(見圖 5-1),我們的內存被設計成8位的存儲單元,每一個內存地址下可以存放一個8位的數據。所以一個完整指令在內存中被分兩行存儲。

圖片

圖 6-2 計數寄存器對指令寄存器的控制示意圖

圖 6-2所示,指令寄存器通過對其他的寄存器的控制來執行指令,程序運行控制模塊則通過控制指令寄存器的運行,達到控制整個電路運行的效果。首先,電路通電后,“程序運行控制邏輯模塊”中PC寄存器放著內存中存放代碼的首地址(圖 6-1的0000 0000地址),然后反復執行如下步驟:

1.控制指令操作寄存器(IR_OP)把第一個指令的操作碼取出(內存設置可讀,IR_OP設置可寫);

2.PC寄存器地址加1;

3.控制指令地址寄存器(IR_ADDR)把第一個指令的操作地址取出(內存設置可讀,IR_ADDR設置可寫);

4.指令地址寄存器(IR_ADDR)設置為可讀,設定好指令操作過程中的內存地址;

5.指令操作寄存器(IR_OP)設置為可讀,按照指令碼運行相應的指令邏輯;

6.PC寄存器地址加1;

每完成一次6個步驟的循環,則完成內存中的一個指令的執行,并準備進入下一個指令的執行。

6.3.指令執行控制譯碼器設計

為了實現反復執行以上6步,電路設計的大概思路是用一個三進八出的譯碼器,輸出端對應這6個步驟,輸入端循環輸入二進制的0~5。

6.4.PC寄存器內存地址加1電路設計

6.5.小節

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5363

    瀏覽量

    121162
  • C語言
    +關注

    關注

    180

    文章

    7614

    瀏覽量

    137712
  • 編程語言
    +關注

    關注

    10

    文章

    1950

    瀏覽量

    34984
  • 程序代碼
    +關注

    關注

    4

    文章

    42

    瀏覽量

    15466
收藏 人收藏

    評論

    相關推薦

    C語言編譯過程

    C語言從源代碼到可執行文件的過程
    的頭像 發表于 02-04 11:58 ?2121次閱讀

    加載機制的過程和策略

    的生命周期為:加載,連接,初始化,使用,卸載。不過這里只重點描述加載,連接,初始化這三個過程。  二、加載過程  基于一張圖看類
    發表于 01-05 17:21

    CPU的代碼語言執行以及編程語言的變化過程是怎樣的

    CPU的基本架構是怎樣組成的?其過程是怎樣的?CPU的代碼語言執行以及編程語言的變化過程是怎樣的
    發表于 11-04 07:13

    c語言指令執行過程是怎樣的

    [STM32]STM32F407系列教程之三,c語言知識點鞏固 指令執行過程
    發表于 12-09 06:31

    arduino用什么語言編程

    Arduino使用C/C++編寫程序,雖然C++兼容C語言,但這是兩種語言,C語言是一種面向過程編程
    發表于 11-08 15:21 ?7w次閱讀

    加載flash并執行(LFAE)次級bootloader的示例

    這篇應用筆記描述了一個加載flash并執行(LFAE)次級bootloader的示例。這個應用是開發來增強AN2546中給出的加載RAM并執行主bootloader的,其中加入了允許隨
    發表于 11-24 13:53 ?3221次閱讀

    java程序的執行過程詳解

    Java程序運行時,必須經過編譯和運行兩個步驟。首先將后綴名為.java的源文件進行編譯,最終生成后綴名為.class的字節碼文件。然后Java虛擬機將編譯好的字節碼文件加載到內存(這個過程被稱為類加載,是由
    發表于 04-26 11:12 ?1.8w次閱讀
    java程序的<b class='flag-5'>執行</b><b class='flag-5'>過程</b>詳解

    GRAPH編程語言

    GRAPH 是一種創建順序控制系統的圖形編程語言。使用順控程序,可以更為快速便捷和直觀地對順序進行編程。通過將過程分解為多個步,而且每個步都有明確的功能范圍,然后再將這些步并組織到順控
    的頭像 發表于 04-09 15:06 ?1.4w次閱讀
    GRAPH<b class='flag-5'>編程</b><b class='flag-5'>語言</b>

    PLC梯形圖編程方法和編程語言的特點

      梯形圖編程是一個廣泛應用于PLC編程編程語言,它有一個與電子電路圖非常相似的框架,但是它的目標是編寫和執行自動化
    發表于 03-16 18:02 ?3447次閱讀

    plc編程是什么 plc編程語言

    PLC編程是指通過PLC編程軟件,使用PLC編程語言(如Ladder Diagram、Function Block Diagram、Structured Text等)對PLC進行程序設
    發表于 04-14 15:44 ?7161次閱讀

    CAPL編程語言快速入門

    CAPL是由Vector公司開發的類似于C語言的面向過程編程語言,是CANoe和CANalyzer中可用的編程
    的頭像 發表于 09-17 16:11 ?2821次閱讀
    CAPL<b class='flag-5'>編程</b><b class='flag-5'>語言</b>快速入門

    簡單聊聊C語言執行步驟

    我們初學C語言時老師肯定講過C語言執行過程:預處理——編譯——匯編——鏈接。
    發表于 07-31 11:28 ?1331次閱讀
    簡單聊聊C<b class='flag-5'>語言</b>的<b class='flag-5'>執行</b>步驟

    uboot命令的執行過程是什么

    U-boot是通過執行u-boot提供的命令來加載Linux內核的,其中 命令bootm的功能 即為從memory啟動Linux內核映像文件。 在講解bootm加載內核之前,先來看看u-boot中
    的頭像 發表于 12-04 17:31 ?863次閱讀

    淺談PLC程序執行過程

    plc初學者,學習編程,首先要了解PLC程序執行過程是什么。
    的頭像 發表于 01-08 09:31 ?3110次閱讀

    MCU編程語言和開發環境介紹

    MCU編程語言 MCU編程語言是用于編寫MCU程序的高級編程語言,它們使得開發者能夠更高效地開
    的頭像 發表于 11-01 11:51 ?1068次閱讀
    易盈国际娱乐城| 百家乐官网de概率| 永利高百家乐官网信誉| 百家乐官网庄闲庄庄闲| 百家乐赢得秘诀| 泰山百家乐的玩法技巧和规则| 卡宾娱乐| 百家乐官网开线| 百家乐的路图片| 永利网上娱乐| 百家乐官网变牌器| 百家乐最佳打| 桑日县| 真人百家乐官网体验金| G3百家乐的玩法技巧和规则| 南城县| 百家乐视频世界| 大发888资讯| 博彩百家乐官网在线| 百家乐赢的方法| 波克棋牌赢话费下载| 百家乐官网桌子豪华| 百家乐衬衣| 百家乐官网赢家公式| A8百家乐游戏| 元游棋牌游戏| 百家乐官网游乐园| 怎么赢百家乐的玩法技巧和规则| 南涧| 赌百家乐赢的奥妙| 168棋牌游戏| 新锦江百家乐官网娱乐平台| 百家乐斗地主下载| 无锡市| 蓝盾百家乐赌场| 应用必备| 百家乐二游戏机| 星子县| 百家乐平注法技巧| 新巴尔虎左旗| 百家乐赌场现金网平台排名|