上一章著重講了指令,我們用匯編、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 0000 | 0000 1100 | 讀取被加數(shù)a的值到加法站暫存器 |
0000 0001 | 0000 1010 | 從內(nèi)存讀取加數(shù),并相加 |
0000 0010 | 0000 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é)
-
寄存器
+關(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
發(fā)布評(píng)論請(qǐng)先 登錄
類加載機(jī)制的過程和策略
CPU的代碼語言執(zhí)行以及編程語言的變化過程是怎樣的
加載flash并執(zhí)行(LFAE)次級(jí)bootloader的示例
java程序的執(zhí)行過程詳解

GRAPH編程語言

PLC梯形圖編程方法和編程語言的特點(diǎn)
plc編程是什么 plc編程語言
簡單聊聊C語言的執(zhí)行步驟

評(píng)論