一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

編程語言的加載和執(zhí)行過程

CHANBAEK ? 來源: 數(shù)殼智學(xué) ? 作者: 赤靈 ? 2023-10-31 10:13 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

6.1.一段程序代碼

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

試著分析這3行代碼:

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

2、c=a+b,首先把a(bǔ)和b的內(nèi)存空間中的數(shù)字,用加法器加起來,得到一個(gè)結(jié)果值9,然后把9存儲(chǔ)到c這個(gè)地址的內(nèi)存空間中。

圖片

圖 6-1 本章代碼內(nèi)存示意圖

指令操作碼指令地址說明
0000 00000000 1100讀取被加數(shù)a的值到加法站暫存器
0000 00010000 1010從內(nèi)存讀取加數(shù),并相加
0000 00100000 1101將相加的結(jié)果存儲(chǔ)內(nèi)存

6.2.程序執(zhí)行控制

從上一章詳細(xì)闡述了指令寄存器從內(nèi)存中取出代碼指令,然后控制指令的執(zhí)行。但是他只負(fù)責(zé)具體執(zhí)行一條指令,給它什么指令,它就去完成,可見背后還應(yīng)該有一個(gè)“指揮棒”,把需要執(zhí)行的指令給指令寄存器,等他執(zhí)行完成后,把下一個(gè)指令給它。

需要設(shè)計(jì)一個(gè)程序執(zhí)行控制模塊,來做這個(gè)“指揮棒”,我們來試著分析它如何工作。

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

圖片

圖 6-2 計(jì)數(shù)寄存器對(duì)指令寄存器的控制示意圖

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

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

2.PC寄存器地址加1;

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

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

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

6.PC寄存器地址加1;

每完成一次6個(gè)步驟的循環(huán),則完成內(nèi)存中的一個(gè)指令的執(zhí)行,并準(zhǔn)備進(jìn)入下一個(gè)指令的執(zhí)行。

6.3.指令執(zhí)行控制譯碼器設(shè)計(jì)

為了實(shí)現(xiàn)反復(fù)執(zhí)行以上6步,電路設(shè)計(jì)的大概思路是用一個(gè)三進(jìn)八出的譯碼器,輸出端對(duì)應(yīng)這6個(gè)步驟,輸入端循環(huán)輸入二進(jìn)制的0~5。

6.4.PC寄存器內(nèi)存地址加1電路設(shè)計(jì)

6.5.小節(jié)

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5434

    瀏覽量

    124476
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7632

    瀏覽量

    141732
  • 編程語言
    +關(guān)注

    關(guān)注

    10

    文章

    1956

    瀏覽量

    36651
  • 程序代碼
    +關(guān)注

    關(guān)注

    4

    文章

    43

    瀏覽量

    15654
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    C語言編譯過程

    C語言從源代碼到可執(zhí)行文件的過程。
    的頭像 發(fā)表于 02-04 11:58 ?2366次閱讀

    加載機(jī)制的過程和策略

    的生命周期為:加載,連接,初始化,使用,卸載。不過這里只重點(diǎn)描述加載,連接,初始化這三個(gè)過程?! 《?、加載過程  基于一張圖看類
    發(fā)表于 01-05 17:21

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

    CPU的基本架構(gòu)是怎樣組成的?其過程是怎樣的?CPU的代碼語言執(zhí)行以及編程語言的變化過程是怎樣的
    發(fā)表于 11-04 07:13

    c語言指令執(zhí)行過程是怎樣的

    [STM32]STM32F407系列教程之三,c語言知識(shí)點(diǎn)鞏固 指令執(zhí)行過程
    發(fā)表于 12-09 06:31

    arduino用什么語言編程

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

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

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

    java程序的執(zhí)行過程詳解

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

    GRAPH編程語言

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

    PLC梯形圖編程方法和編程語言的特點(diǎn)

      梯形圖編程是一個(gè)廣泛應(yīng)用于PLC編程編程語言,它有一個(gè)與電子電路圖非常相似的框架,但是它的目標(biāo)是編寫和執(zhí)行自動(dòng)化
    發(fā)表于 03-16 18:02 ?4062次閱讀

    plc編程是什么 plc編程語言

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

    CAPL編程語言快速入門

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

    簡單聊聊C語言執(zhí)行步驟

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

    uboot命令的執(zhí)行過程是什么

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

    淺談PLC程序執(zhí)行過程

    plc初學(xué)者,學(xué)習(xí)編程,首先要了解PLC程序執(zhí)行過程是什么。
    的頭像 發(fā)表于 01-08 09:31 ?3971次閱讀

    MCU編程語言和開發(fā)環(huán)境介紹

    MCU編程語言 MCU編程語言是用于編寫MCU程序的高級(jí)編程語言,它們使得開發(fā)者能夠更高效地開
    的頭像 發(fā)表于 11-01 11:51 ?2194次閱讀