www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > > 充電吧
[導(dǎo)讀]第4章?處理器體系結(jié)構(gòu)·四關(guān)鍵詞:處理器體系結(jié)構(gòu),匯編語言,指令集,硬件控制語言,寄存器和存儲器 一個處理器支持的指令和指令的字節(jié)級編碼成為它的ISA(instruction-set archite

第4章?處理器體系結(jié)構(gòu)·四
關(guān)鍵詞:處理器體系結(jié)構(gòu),匯編語言,指令集,硬件控制語言,寄存器和存儲器 一個處理器支持的指令和指令的字節(jié)級編碼成為它的ISA(instruction-set architecture,指令集體系結(jié)構(gòu))。 ISA在編譯器編寫者和處理器設(shè)計人員之間提供了一個概念抽象層,編譯器編寫者只需要知道允許哪些指令,以及它們是如何編碼的;而處理器設(shè)計者必須建造出執(zhí)行這些指令的處理器。 4.1 處理器設(shè)計的特點(diǎn) 1 從智力方面來說,處理器設(shè)計是非常有趣的。它需要完成復(fù)雜的人物,而結(jié)構(gòu)又要盡可能簡單。 2 理解處理器是如何工作的能幫助理解整個計算機(jī)系統(tǒng)是如何工作的。 3 雖然很少有人設(shè)計處理器,但是許多人設(shè)計包含處理器的硬件系統(tǒng)。 4 你的工作可能就是處理器設(shè)計。 4.2 Y86指令集體系結(jié)構(gòu) Y86的處理器狀態(tài)類似于IA32。有八個寄存器(program register):%eax、%ecx、%edx、%ebx、%esi、%edi、%esp、%ebp。處理器每個程序寄存器儲存一個字。寄存器%esp被入棧、出棧、調(diào)用和返回指令作為棧指針。而其它寄存器沒有固定的含義或固定值。有三個一位的條件碼(condition code):ZF、SF、OF,它們保存著最近的算術(shù)或邏輯指令造成影響的信息。程序計數(shù)器(PC)里存放著當(dāng)前正在執(zhí)行執(zhí)行的地址。存儲器從概念上來說就是一個很大的字節(jié)數(shù)組,保存著程序和數(shù)據(jù)。Y86用虛擬地址來引用存儲器位置。硬件和操作系統(tǒng)如眼見聯(lián)合起來將虛擬地址翻譯成指明數(shù)據(jù)實(shí)際存在存儲器中哪個地方的實(shí)際或物理地址。 1 Y86的指令細(xì)節(jié) (1)IA32的movl指令分成了四個不同的指令:irmovl、rrmovl、mrmovl、rmmovl,分別顯式地指明源和目的的格式。源可以是立即數(shù)(i)、寄存器(r)或存儲器(m)。指令名字的第一個字母指明了目的的類型。兩個存儲器傳送指令中的存儲器引用方式是簡單的基址加位移形式。在地址計算中,我們不支持第二變址寄存器(second index register)和任何寄存器值的伸縮(scaling)。同IA32一樣,我們不允許從一個存儲器地址直接傳送到另一個存儲器地址。另外我們也不允許將立即數(shù)傳送到存儲器。 (2)有四個整數(shù)操作指令,就是OPI。它們是addl、subl、andl、xorl。它們只對寄存器數(shù)據(jù)進(jìn)行操作,而IA32還允許對存儲數(shù)據(jù)進(jìn)行這些操作。這些指令會設(shè)置三個條件ZF、SF、OF(零、符號、溢出)。 (3)七個跳轉(zhuǎn)指令。是jmp、jle、jl、je、jne、jge、jg。根據(jù)轉(zhuǎn)移指令的類型和條件代碼的設(shè)置來選擇轉(zhuǎn)移。轉(zhuǎn)移條件和IA32的一樣。 (4)call指令返回地址入棧,然后跳到目的地址。ret指令從這樣的過程中返回。 (5)pushl和popl指令實(shí)現(xiàn)了入棧和出棧,就像在IA32中一樣。 (6)halt指令停止指令的執(zhí)行。IA32中有一個與之相當(dāng)?shù)闹噶罱衕lt。IA32的應(yīng)用程序不允許使用這條指令,因?yàn)樗麜?dǎo)致整個系統(tǒng)停止。在Y86程序中用halt指令來停止模擬器。 指令集的一個重要性質(zhì)就是字節(jié)解釋必須有唯一的解釋。任意一個字節(jié)序列要么是一個唯一的指令蓄力的編碼,要目就不是一個合法的字節(jié)序列。這個性質(zhì)保證了處理器可以無二義性地執(zhí)行目標(biāo)代碼程序。 2 IA32HE Y86的指令編碼的比較 同IA32中的指令編碼相比,Y86的編碼簡單的多,但是也沒有那么簡潔。在所有的Y86指令中,寄存器字段的位置都是固定的,而在不同的IA32指令中,它們的位置是不一樣的。即使最多只有8個寄存器,我們也對寄存器采用了4位編碼。IA32只用了3位編碼。所以IA32能將入?;虺鰲V噶罘旁谝粋€自接力,5位字段表明指令類型,剩下的3位是寄存器指示符。IA32可以將常數(shù)值編碼成1、2或4個字節(jié),而Y86總是將常熟之編碼成4個字節(jié)。 4.3 邏輯設(shè)計和硬件控制語言HCL 要實(shí)現(xiàn)一個數(shù)字系統(tǒng)需要三個主要部分:計算位的函數(shù)的組合邏輯、存儲位的存儲器元素,以及控制存儲器元素更新的時鐘信號。 HCL:(hardware control language),硬件控制語言。 1 HCL和C語言的區(qū)別 (1)因?yàn)榻M合電路是由一些邏輯門組成的,它有兩個屬性就是輸出會持續(xù)地響應(yīng)輸入的變化。相比之下,C表達(dá)式只會在程序執(zhí)行過程中被遇到時才進(jìn)行求值。 (2)C的邏輯表達(dá)式允許參數(shù)是任意整數(shù),0表示FALSE,其它任何值都表示TRUE。而我們的邏輯門只對位值0和1進(jìn)行操作。 (3)C的邏輯表達(dá)式有個屬性就是它們可能只被部分求值。如果一個AND或OR操作的結(jié)果只用第一個參數(shù)求值就能確定,那么就不用對第二個參數(shù)求值了。而組合邏輯沒有部分求值這條規(guī)則,邏輯門只是簡單地響應(yīng)它們輸入的變化。 2 存儲器和時鐘控制 組合電路從本質(zhì)上講,不存儲任何信息,相反,它們只是簡單地響應(yīng)輸入信號,產(chǎn)生等于輸入的某個函數(shù)輸出。為了產(chǎn)生時序電路,也就是有狀態(tài)并且在這個狀態(tài)上進(jìn)行計算的系統(tǒng),我們必須引入按位存儲信息的設(shè)備。 時鐘寄存器:(簡稱寄存器)存儲單個位或字。時鐘信號控制寄存器加載輸入值。 隨機(jī)訪問存儲器:(簡稱存儲器),存儲多個字,用地址來選擇該讀或?qū)懩膫€字。 4.4 Y86的順序?qū)崿F(xiàn) 處理一條指令包括很多操作。我們將他們組織成某個特殊的階段序列,使即使指令的動作差異很大,但所有的指令都遵循統(tǒng)一的序列。每一步的具體處理取決于正在執(zhí)行的指令。各個階段以及各階段內(nèi)執(zhí)行操作的簡略描述。 取指(fetch):取指階段從存儲器讀入指令,地址為程序計數(shù)器(PC)的值。 譯碼(decode):譯碼階段從寄存器堆讀入最多兩個操作數(shù)。 執(zhí)行(execute):在執(zhí)行階段,算術(shù)/邏輯單元(ALU)要么執(zhí)行指令指明的操作,計算存儲器引用的有效地址,要么增加或減少棧指針。 訪存(memory)訪存階段可以將數(shù)據(jù)寫入存儲器,或者從存儲器讀出數(shù)據(jù)。 寫回(write back):寫回階段最多可以寫兩個結(jié)果到寄存器堆。 更新PC(PC update):將PC設(shè)置成下一條指令的地址。 處理器無限制地循環(huán)執(zhí)行這些階段,只有在遇到halt指令或一些錯誤情況時,才會停下來。我們處理的錯誤情況包括非法存儲器地址(程序地址或數(shù)據(jù)地址),以及非法指令。 參考文獻(xiàn) 布賴恩特, O'Hallaron D, et al. 深入理解計算機(jī)系統(tǒng)[M]. 中國電力出版社, 2004.

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

MCS-51單片機(jī)的匯編語言程序由若干條匯編語言指令和偽指令構(gòu)成。指令存放在程序存儲器中,被單片機(jī)讀取并執(zhí)行,且執(zhí)行結(jié)果將影響單片機(jī)自身的狀態(tài)。

關(guān)鍵字: 匯編語言 偽指令

目前,結(jié)構(gòu)化是程序設(shè)計的基本要求,可以使程序結(jié)構(gòu)清晰、易于讀寫且方便調(diào)試,也能夠提高程序設(shè)計的效率。在結(jié)構(gòu)化程序設(shè)計中,程序的基本結(jié)構(gòu)有三種,即順序結(jié)構(gòu)、分支結(jié)構(gòu)及循環(huán)結(jié)構(gòu)。而子程序(也被稱為函數(shù)或過程)是一種提高程序模...

關(guān)鍵字: 匯編語言 順序程序設(shè)計

在單片機(jī)系統(tǒng)設(shè)計中,程序設(shè)計是重要的一環(huán),它的質(zhì)量直接影響到整個系統(tǒng)的功能。用匯編語言進(jìn)行程序設(shè)計的過程和用高級語言設(shè)計程序有相似之處,其設(shè)計過程大致可以分為以下幾個步驟:

關(guān)鍵字: 匯編語言 程序設(shè)計 單片機(jī)

匯編語言(Assembly Language)是任何一種用于電子計算機(jī)、微處理器、微控制器或其他可編程器件的低級語言,亦稱為符號語言。在匯編語言中,用助記符代替機(jī)器指令的操作碼,用地址符號或標(biāo)號代替指令或操作數(shù)的地址。在...

關(guān)鍵字: 匯編語言 指令 單片機(jī)

C語言是一種計算機(jī)程序設(shè)計語言,它既具有高級語言的特點(diǎn),又具有匯編語言的特點(diǎn)。它由美國貝爾研究所的D.M.Ritchie于1972年推出,1978年后,C語言已先后被移植到大、中、小及微型機(jī)上,它可以作為工作系統(tǒng)設(shè)計語言...

關(guān)鍵字: C語言 匯編語言

在匯編語言程序設(shè)計中,經(jīng)常使用各種符號代替地址、變量和常量等,以增加程序的可讀性。盡管符號的命名由編程者決定,但并不是任意的.

關(guān)鍵字: ARM 匯編語言 符號

硬件設(shè)計: GR8CPU是在面包板上構(gòu)建功能齊全的計算機(jī)。

關(guān)鍵字: CPU Unix 匯編語言

學(xué)習(xí)編程其實(shí)就是學(xué)高級語言,即那些為人類設(shè)計的計算機(jī)語言。 但是,計算機(jī)不理解高級語言,必須通過編譯器轉(zhuǎn)成二進(jìn)制代碼,才能運(yùn)行。

關(guān)鍵字: 匯編語言

看到這篇文章的朋友,想必大家對pic單片機(jī)均具備一定興趣,或?qū)ic單片機(jī)具備一定使用需求。前文中,小編曾對pic單片機(jī)匯編語言進(jìn)行過部分講解。本文中,將對pic單片機(jī)的清零等指令加以講解,以幫助大家更好掌握pic單片機(jī)...

關(guān)鍵字: pic單片機(jī) 指令 匯編語言

pic單片機(jī)為最常用單片機(jī)之一,許多程序均基于pic單片機(jī)進(jìn)行開發(fā)。因此,熟練pic單片機(jī)編程尤為重要。為保證大家能準(zhǔn)確、熟練掌握pic單片機(jī)的使用,本文特帶來pic單片機(jī)的各種匯編語言指令的講解上篇,下篇將在后期文章中...

關(guān)鍵字: pic單片機(jī) 單片機(jī) 匯編語言
關(guān)閉