色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

全面解析構(gòu)建4位計(jì)算機(jī):匯編語(yǔ)言和匯編器

電子設(shè)計(jì) ? 來源:eeweb ? 作者:Max Maxfield ? 2021-05-13 14:52 ? 次閱讀

作為我們討論的起點(diǎn),讓我們進(jìn)行一個(gè)簡(jiǎn)單的思想實(shí)驗(yàn)。假設(shè)我們剛剛完成了4位HRRG計(jì)算機(jī)的構(gòu)建。我們還假設(shè)它是地球上的第一臺(tái)計(jì)算機(jī)。也就是說,沒有任何其他計(jì)算機(jī)或編程語(yǔ)言,或者……好吧,什么都沒有。

讓我們寬容自己,并假設(shè)我們還開發(fā)了一些輸入和輸出設(shè)備-看起來像QWERTY鍵盤,VT100終端和紙帶讀/寫器,并且已經(jīng)將它們連接到某些HRRG上。輸入和輸出端口,但我們尚未創(chuàng)建任何代碼來驅(qū)動(dòng)小流氓。

在繼續(xù)本專欄的其余部分之前,為什么不暫停片刻,以考慮下一步將要做什么。

用機(jī)器代碼捕獲和輸入程序

作為一個(gè)快速提醒,HRRG具有16個(gè)寄存器并支持16條指令,如下所示(“指令集”和“指令”中對(duì)各種指令執(zhí)行其魔術(shù)的方式進(jìn)行了更詳細(xì)的討論。權(quán)衡”列)。

pIYBAGCcwx6AQHesAAM9Vs0h5NU290.png

HRRG的CPU寄存器和指令。(來源:馬克斯·麥克菲爾德(Max Maxfield)

我們的首要任務(wù)是創(chuàng)建一個(gè)非常非常簡(jiǎn)單的程序,以確保該野獸完全起作用。如果我們決定使用鉛筆和紙來捕獲該程序的意圖并繪制帶有相關(guān)注釋的流程圖,這不會(huì)讓我感到驚訝,如下所示:

pIYBAGCcwy-AQEHGAAL66BQdDHs021.png

一個(gè)簡(jiǎn)單程序的流程圖。(來源:馬克斯·麥克菲爾德(Max Maxfield)

下一步將是確定要加載到計(jì)算機(jī)內(nèi)存中的哪些操作碼和操作數(shù),以實(shí)現(xiàn)我們的程序。再一次,這可能涉及鉛筆和紙以及一些皺眉和頭撓,結(jié)果如下所示:

o4YBAGCcwzuAHd4kAAS_8k6kNZY896.png

簡(jiǎn)單程序的機(jī)器代碼。(資料來源:馬克斯·麥克菲爾德(Max Maxfield)

這種表示形式稱為“機(jī)器代碼”,因?yàn)樗鼈兪俏覀兊挠?jì)算機(jī)(機(jī)器)將執(zhí)行(處理)的二進(jìn)制代碼。

最后但并非最不重要的一點(diǎn)是,我們希望將機(jī)器代碼加載到計(jì)算機(jī)中并運(yùn)行程序,但是我們將如何做呢?好吧,我們可能會(huì)構(gòu)建一個(gè)開關(guān)面板并將其連接到計(jì)算機(jī)。至少,這將涉及12個(gè)撥動(dòng)開關(guān)代表地址,4個(gè)撥動(dòng)開關(guān)代表數(shù)據(jù),以及幾個(gè)控制開關(guān)和按鈕,如下所示。

pIYBAGCcw0mAdpSfAAHu6Q25ouk341.png

簡(jiǎn)單的HRRG開關(guān)面板(來源:Max Maxfield)

為了輸入程序,我們將“ Program / Run”開關(guān)設(shè)置為“ Program”,在地址開關(guān)上設(shè)置一個(gè)地址,并在數(shù)據(jù)開關(guān)上設(shè)置一個(gè)相應(yīng)的操作碼或操作數(shù),然后按“ Load”按鈕以將該值加載到內(nèi)存中。我們將對(duì)構(gòu)成程序的所有小節(jié)重復(fù)此過程。上圖顯示了我們準(zhǔn)備將$ C(跳轉(zhuǎn))操作碼輸入到內(nèi)存位置$ 106中。

輸入程序后,我們將地址開關(guān)設(shè)置為指向程序的起始地址(在本示例中為$ 100),然后將“ Program / Run”開關(guān)切換為“ Run”。

匯編語(yǔ)言捕獲程序

許多設(shè)計(jì)原始計(jì)算機(jī)的團(tuán)隊(duì)都認(rèn)為,為了獲得最佳結(jié)果,必須盡可能地靠近機(jī)器。也就是說,他們的理念是編寫盡可能接近機(jī)器內(nèi)部表示形式的程序;即機(jī)器代碼。

但是,您可能想像到,以機(jī)器代碼捕獲和輸入程序非常耗時(shí),容易出錯(cuò),并且最終會(huì)給地域帶來麻煩。下一步是使用一種稱為匯編語(yǔ)言的低級(jí)符號(hào)編程語(yǔ)言來捕獲一個(gè)程序,在該語(yǔ)言中,程序的語(yǔ)句與計(jì)算機(jī)的機(jī)器代碼指令之間存在非常強(qiáng)的對(duì)應(yīng)關(guān)系。(英國(guó)數(shù)學(xué)家凱瑟琳·布斯(Kathleen Booth)因她在1947年開始的理論工作而發(fā)明了匯編語(yǔ)言的概念而受到贊譽(yù)。)

當(dāng)然,擁有匯編語(yǔ)言與擁有匯編程序并不相同,匯編程序是指將匯編程序源代碼轉(zhuǎn)換為可執(zhí)行機(jī)器代碼的實(shí)用程序。在我們的思想實(shí)驗(yàn)中,我們?nèi)蕴幱谑褂勉U筆和紙來捕獲程序的階段。

假設(shè)我們已經(jīng)定義了HRRG匯編語(yǔ)言(我們將在我的下一篇專欄中更詳細(xì)地考慮該語(yǔ)言)。在這種情況下,我們可以使用鉛筆和紙以匯編語(yǔ)言捕獲程序并將其手工匯編為機(jī)器代碼。讓我們考慮一下原始測(cè)試程序的情況,如下所示:

o4YBAGCcw1iAC8_lAAPWL9dcijg584.png

手工匯編代碼(來源:Max Maxfield)

非常有用的一件事是將標(biāo)簽與關(guān)鍵指令的地址相關(guān)聯(lián),例如標(biāo)記我們循環(huán)開始的LOOP標(biāo)簽。在瀏覽程序時(shí),我們將構(gòu)建標(biāo)簽及其地址的交叉引用表,如上圖的右上角所示。

就我們的簡(jiǎn)單程序而言,我們?cè)谑褂脴?biāo)簽之前先聲明了標(biāo)簽,這使我們的生活變得輕松。在更復(fù)雜的程序中,我們可能在聲明標(biāo)簽之前先參考標(biāo)簽(例如,跳轉(zhuǎn)到其標(biāo)簽位于程序下方的子例程)。在這種情況下,我們將對(duì)源代碼執(zhí)行多次遍歷,其中第一遍遍使我們能夠確定所有標(biāo)簽的地址,而第二遍遍使我們能夠解析我們不知道的任何地址,時(shí)間周期。

通過我們的引導(dǎo)程序振作起來

這就是開始變得有趣的地方。首先,我們將創(chuàng)建幾個(gè)簡(jiǎn)單的低級(jí)實(shí)用程序例程,以允許我們監(jiān)視鍵盤并使用我們的紙帶讀取器/寫入器。為此,我們可以用鉛筆和紙捕獲源代碼,將其手工組裝成機(jī)器代碼,然后使用開關(guān)面板將該機(jī)器代碼加載到計(jì)算機(jī)的內(nèi)存中(請(qǐng)注意,我們可以將多個(gè)程序存儲(chǔ)在計(jì)算機(jī)的不同區(qū)域中)。記憶)。

大約在這個(gè)時(shí)候,我們還將創(chuàng)建一個(gè)低級(jí)別的監(jiān)視程序。這種程序提供了一個(gè)簡(jiǎn)單的用戶界面(通常基于單個(gè)字符命令),以允許用戶執(zhí)行諸如檢查和更改內(nèi)存,讀取或?qū)懭隝 / O端口以及將控制權(quán)轉(zhuǎn)移到內(nèi)存中其他程序的操作。再一次,將使用鉛筆和紙捕獲該程序,然后手工組裝,并使用開關(guān)面板將其加載到計(jì)算機(jī)的內(nèi)存中。

接下來,我們將創(chuàng)建一個(gè)簡(jiǎn)單的匯編程序,僅支持我們最終希望擁有的部分功能。和以前一樣,將使用鉛筆和紙捕獲此簡(jiǎn)單的匯編程序,然后手工組裝,然后使用開關(guān)面板將其加載到計(jì)算機(jī)的內(nèi)存中。

現(xiàn)在我們可以搖滾了,因?yàn)槲覀兛梢允褂秒妭鞔蜃謾C(jī)終端之類的功能來捕獲首遍匯編程序支持的匯編語(yǔ)言子集中的程序,并將這些源代碼程序?qū)懭爰垘А=酉聛恚覀兛梢允褂帽O(jiān)視程序和實(shí)用程序從紙帶讀取此源代碼,并將其存儲(chǔ)在計(jì)算機(jī)內(nèi)存的一個(gè)區(qū)域中。然后,我們可以使用首遍匯編程序?qū)⒋嗽创a匯編為可執(zhí)行的機(jī)器代碼,并將其存儲(chǔ)在內(nèi)存的另一個(gè)區(qū)域中。在這一點(diǎn)上,我們可以對(duì)存儲(chǔ)在計(jì)算機(jī)內(nèi)存中的可執(zhí)行機(jī)器代碼做兩件事:

從這時(shí)起,我們的牡蠣(或龍蝦,或我們選擇的任何甲殼類動(dòng)物)便成為現(xiàn)實(shí),因?yàn)槲覀兛梢允褂檬走^匯編程序?yàn)樗鞋F(xiàn)有程序(包括監(jiān)視器,低級(jí)程序)創(chuàng)建更復(fù)雜的版本。實(shí)用程序和匯編器本身。然后,我們可以使用更復(fù)雜的匯編器來創(chuàng)建一個(gè)更高級(jí)的匯編器,然后一路走走。

有趣的是,當(dāng)您使用高級(jí)編程語(yǔ)言(例如C或C ++)編寫程序時(shí),編譯器不會(huì)將其直接編譯為機(jī)器代碼-而是,編譯器會(huì)在匯編源代碼中生成程序的中間版本代碼,然后將這些源代碼組裝成機(jī)器代碼。所有這些對(duì)于普通用戶都是不可見的,但是對(duì)于編譯器開發(fā)人員和專業(yè)程序員而言,訪問中間匯編代碼可能是無價(jià)的。

交叉匯編程序和宏匯編程序

在上面的思想實(shí)驗(yàn)中,我們考慮了最壞的情況,其中HRRG是地球上唯一的計(jì)算機(jī)。對(duì)于后續(xù)機(jī)器的設(shè)計(jì)人員來說,事情變得容易得多,因?yàn)樗麄兛梢允褂矛F(xiàn)有機(jī)器來加快速度。

例如,交叉匯編程序是一種匯編程序,可以將指令轉(zhuǎn)換為用于運(yùn)行該計(jì)算機(jī)的計(jì)算機(jī)以外的計(jì)算機(jī)的機(jī)器代碼。我在HRRG上的同謀者EEWeb專家Joe Farr創(chuàng)建了一個(gè)在PC上運(yùn)行的HRRG交叉匯編器,它采用HRRG的匯編語(yǔ)言編寫程序,并生成可在HRRG上運(yùn)行的可執(zhí)行機(jī)器/目標(biāo)代碼。下面的兩個(gè)圖像顯示了同一程序段的源代碼版本和目標(biāo)代碼版本。

o4YBAGCcw2eACX6tAAX69Kl0R5E126.png

HRRG交叉匯編器源代碼視圖(來源:Joe Farr)

pIYBAGCcw3aANNMRAATla0FLpqw077.png

HRRG交叉匯編器目標(biāo)代碼視圖(來源:Joe Farr)

更好的是,HRRG的匯編程序是宏匯編程序,它是可以執(zhí)行宏替換和擴(kuò)展的匯編程序。這使我們能夠定義由一個(gè)或多個(gè)語(yǔ)句組成的宏,然后在程序中稍后使用這些宏名稱,從而避免了必須重寫語(yǔ)句。

舉一個(gè)簡(jiǎn)單的例子,HRRG的指令集不包含HALT指令。但是,我們可以使用HRRG的匯編語(yǔ)言將這樣的指令實(shí)現(xiàn)為宏,如下所示:

.MACRO HALT

OR %0010, S1

.ENDMACRO

現(xiàn)在,我們可以將前面的程序示例中的OR指令替換為HALT,這有助于使程序更易于理解。此外,我們可以將所有宏捆綁到一個(gè)單獨(dú)的文件中,然后可以使用.INCLUDE指令將其導(dǎo)入到程序中。

編輯:hfy

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

    關(guān)注

    31

    文章

    5336

    瀏覽量

    120232
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10855

    瀏覽量

    211592
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    TMS320C6000匯編語(yǔ)言工具 v8.3.x

    電子發(fā)燒友網(wǎng)站提供《TMS320C6000匯編語(yǔ)言工具 v8.3.x.pdf》資料免費(fèi)下載
    發(fā)表于 11-07 10:00 ?0次下載
    TMS320C6000<b class='flag-5'>匯編語(yǔ)言</b>工具 v8.3.x

    ARM匯編語(yǔ)言工具

    電子發(fā)燒友網(wǎng)站提供《ARM匯編語(yǔ)言工具.pdf》資料免費(fèi)下載
    發(fā)表于 11-06 09:12 ?0次下載
    ARM<b class='flag-5'>匯編語(yǔ)言</b>工具

    TMS320C28x匯編語(yǔ)言工具

    電子發(fā)燒友網(wǎng)站提供《TMS320C28x匯編語(yǔ)言工具.pdf》資料免費(fèi)下載
    發(fā)表于 11-01 09:32 ?0次下載
    TMS320C28x<b class='flag-5'>匯編語(yǔ)言</b>工具

    TMS320LF240x DSP的C語(yǔ)言和匯編代碼快速入門

    電子發(fā)燒友網(wǎng)站提供《TMS320LF240x DSP的C語(yǔ)言和匯編代碼快速入門.pdf》資料免費(fèi)下載
    發(fā)表于 10-18 10:14 ?0次下載
    TMS320LF240x DSP的C<b class='flag-5'>語(yǔ)言和</b><b class='flag-5'>匯編</b>代碼快速入門

    計(jì)算機(jī)存儲(chǔ)系統(tǒng)的構(gòu)成

    Memory),再到輔助存儲(chǔ)(Auxiliary Memory),每一層都有其特定的功能和特點(diǎn)。以下是對(duì)計(jì)算機(jī)存儲(chǔ)系統(tǒng)構(gòu)成的詳細(xì)解析
    的頭像 發(fā)表于 09-26 15:25 ?798次閱讀

    RISC-V匯編語(yǔ)言

    一、導(dǎo)言 從 C 程序翻譯成為可以在計(jì)算機(jī)上執(zhí)行的機(jī)器語(yǔ)言程序的四個(gè)經(jīng)典步驟。這一章的內(nèi)容包括了后三個(gè)步驟,不過我們要從匯編語(yǔ)言在 RISC-V 函數(shù)調(diào)用規(guī)范中的作用開始說起。 上圖從C源代碼翻譯
    發(fā)表于 08-19 18:07

    DRAM在計(jì)算機(jī)中的應(yīng)用

    DRAM(Dynamic Random Access Memory,動(dòng)態(tài)隨機(jī)存取存儲(chǔ))在計(jì)算機(jī)系統(tǒng)中扮演著至關(guān)重要的角色。它是一種半導(dǎo)體存儲(chǔ),用于存儲(chǔ)和快速訪問數(shù)據(jù),是計(jì)算機(jī)主內(nèi)存
    的頭像 發(fā)表于 07-24 17:04 ?1117次閱讀

    RISC-V 匯編在線仿真 Ripes OnLine 使用說明

    Ripes OnLine RISC-V 模擬網(wǎng)址 RISC-V 旨在簡(jiǎn)化。在線 Ripes 模擬可讓您運(yùn)行匯編代碼,而無需在計(jì)算機(jī)上進(jìn)行任何安裝。 Ripes.me 網(wǎng)頁(yè) 轉(zhuǎn)到網(wǎng)頁(yè)
    發(fā)表于 06-28 14:59

    PLC編程語(yǔ)言和C語(yǔ)言的區(qū)別

    在工業(yè)自動(dòng)化和計(jì)算機(jī)編程領(lǐng)域中,PLC(可編程邏輯控制)編程語(yǔ)言和C語(yǔ)言各自扮演著重要的角色。盡管兩者都是編程語(yǔ)言,但它們?cè)诙鄠€(gè)方面存在顯
    的頭像 發(fā)表于 06-14 17:11 ?2785次閱讀

    請(qǐng)問在STM32CubeIDE下如何嵌入匯編語(yǔ)言代碼?

    在STM32CubeIDE下如何嵌入匯編語(yǔ)言代碼??
    發(fā)表于 03-25 06:56

    計(jì)算機(jī)最核心的——CPU

    在CPU的四個(gè)結(jié)構(gòu)中,寄存的重要性遠(yuǎn)遠(yuǎn)高于其余三個(gè),為什么這么說?因?yàn)槌绦蛲ǔJ前鸭拇?b class='flag-5'>器作為對(duì)象來進(jìn)行描述的。而說到寄存,就不得不說到匯編語(yǔ)言,說到
    發(fā)表于 03-13 14:04 ?1897次閱讀
    <b class='flag-5'>計(jì)算機(jī)</b>最核心的——CPU

    【RISC-V開放架構(gòu)設(shè)計(jì)之道|閱讀體驗(yàn)】匯編語(yǔ)言和擴(kuò)展指令集

    【RISC-V開放架構(gòu)設(shè)計(jì)之道|閱讀體驗(yàn)】匯編語(yǔ)言和擴(kuò)展指令集 匯編語(yǔ)言 將C語(yǔ)言翻譯成可執(zhí)行的機(jī)器語(yǔ)言的重要步驟包括編譯過程,匯編過程,鏈
    發(fā)表于 02-03 13:29

    汽車ECU編程是單片機(jī)C語(yǔ)言還是匯編語(yǔ)言

    汽車ECU編程是單片機(jī)C語(yǔ)言嗎?還是匯編語(yǔ)言
    發(fā)表于 01-26 06:08

    C語(yǔ)言能夠?qū)崿F(xiàn)單片機(jī)功能,為什么還要使用匯編呢?

    ,但在某些特定的場(chǎng)景下,使用匯編語(yǔ)言仍然是必要的。在本文中,我們將探討為什么在一些特殊情況下使用匯編語(yǔ)言是有必要的。 首先,匯編語(yǔ)言可以提供更高的性能。由于C語(yǔ)言是高級(jí)
    的頭像 發(fā)表于 01-15 14:59 ?1053次閱讀

    嵌入式C語(yǔ)言大神的進(jìn)階思路

    熟悉一種或幾種CPU架構(gòu),掌握幾種架構(gòu)的匯編語(yǔ)言,學(xué)會(huì)使用反匯編去分析C語(yǔ)言底層運(yùn)行過程
    的頭像 發(fā)表于 01-02 09:58 ?623次閱讀
    主站蜘蛛池模板: 免费成年人在线观看视频| 少女free大陆| 国产成人拍精品免费视频爱情岛 | 国产电影一区二区三区| 午夜福利院电影| 久久福利影院| chinese情侣自拍啪hd| 无人在线观看免费高清视频播放| 狠狠色综合久久丁香婷婷| 91热久久免费精品99| 国产精品亚洲AV色欲在线观看| 国产精品xxxav免费视频| 亚洲日韩成人| 日本最新免费区中文| 精品视频中文字幕| 成人啪啪色婷婷久色社区| 亚洲精品无码葡京AV天堂| 嗯好大好猛皇上好深用力| 国产剧情麻豆mv| S货SAO死你BL大点声叫BL| 亚洲精品一区二区在线看片| 啪啪激情婷婷久久婷婷色五月| 韩国伦理三级| 囯产少妇BBBBBB高潮喷水一| 中国午夜伦理片| 小便japanesewctv| 欧美大片免费观看| 久草色在线| 国产日韩欧美三级| 顶级欧美不卡一区二区三区| 在线观看中文字幕国产| 午夜啪啪免费视频| 日本福利片午夜免费观着| 免费可以看污动画软件| 久久99精品AV99果冻| 国产免费人成在线视频有码| 超碰国产视频免费播放| 97免费人妻在线观看| 中文在线观看永久免费| 亚洲精品久久无码AV片WWW| 视频一区亚洲中文字幕|