在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

全面解析構建4位計算機:匯編語言和匯編器

電子設計 ? 來源:eeweb ? 作者:Max Maxfield ? 2021-05-13 14:52 ? 次閱讀

作為我們討論的起點,讓我們進行一個簡單的思想實驗。假設我們剛剛完成了4位HRRG計算機的構建。我們還假設它是地球上的第一臺計算機。也就是說,沒有任何其他計算機或編程語言,或者……好吧,什么都沒有。

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

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

用機器代碼捕獲和輸入程序

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

pIYBAGCcwx6AQHesAAM9Vs0h5NU290.png

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

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

pIYBAGCcwy-AQEHGAAL66BQdDHs021.png

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

下一步將是確定要加載到計算機內存中的哪些操作碼和操作數,以實現我們的程序。再一次,這可能涉及鉛筆和紙以及一些皺眉和頭撓,結果如下所示:

o4YBAGCcwzuAHd4kAAS_8k6kNZY896.png

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

這種表示形式稱為“機器代碼”,因為它們是我們的計算機(機器)將執行(處理)的二進制代碼。

最后但并非最不重要的一點是,我們希望將機器代碼加載到計算機中并運行程序,但是我們將如何做呢?好吧,我們可能會構建一個開關面板并將其連接到計算機。至少,這將涉及12個撥動開關代表地址,4個撥動開關代表數據,以及幾個控制開關和按鈕,如下所示。

pIYBAGCcw0mAdpSfAAHu6Q25ouk341.png

簡單的HRRG開關面板(來源:Max Maxfield)

為了輸入程序,我們將“ Program / Run”開關設置為“ Program”,在地址開關上設置一個地址,并在數據開關上設置一個相應的操作碼或操作數,然后按“ Load”按鈕以將該值加載到內存中。我們將對構成程序的所有小節重復此過程。上圖顯示了我們準備將$ C(跳轉)操作碼輸入到內存位置$ 106中。

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

匯編語言捕獲程序

許多設計原始計算機的團隊都認為,為了獲得最佳結果,必須盡可能地靠近機器。也就是說,他們的理念是編寫盡可能接近機器內部表示形式的程序;即機器代碼。

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

當然,擁有匯編語言與擁有匯編程序并不相同,匯編程序是指將匯編程序源代碼轉換為可執行機器代碼的實用程序。在我們的思想實驗中,我們仍處于使用鉛筆和紙來捕獲程序的階段。

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

o4YBAGCcw1iAC8_lAAPWL9dcijg584.png

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

非常有用的一件事是將標簽與關鍵指令的地址相關聯,例如標記我們循環開始的LOOP標簽。在瀏覽程序時,我們將構建標簽及其地址的交叉引用表,如上圖的右上角所示。

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

通過我們的引導程序振作起來

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

大約在這個時候,我們還將創建一個低級別的監視程序。這種程序提供了一個簡單的用戶界面(通常基于單個字符命令),以允許用戶執行諸如檢查和更改內存,讀取或寫入I / O端口以及將控制權轉移到內存中其他程序的操作。再一次,將使用鉛筆和紙捕獲該程序,然后手工組裝,并使用開關面板將其加載到計算機的內存中。

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

現在我們可以搖滾了,因為我們可以使用電傳打字機終端之類的功能來捕獲首遍匯編程序支持的匯編語言子集中的程序,并將這些源代碼程序寫入紙帶。接下來,我們可以使用監視程序和實用程序從紙帶讀取此源代碼,并將其存儲在計算機內存的一個區域中。然后,我們可以使用首遍匯編程序將此源代碼匯編為可執行的機器代碼,并將其存儲在內存的另一個區域中。在這一點上,我們可以對存儲在計算機內存中的可執行機器代碼做兩件事:

從這時起,我們的牡蠣(或龍蝦,或我們選擇的任何甲殼類動物)便成為現實,因為我們可以使用首過匯編程序為所有現有程序(包括監視器,低級程序)創建更復雜的版本。實用程序和匯編器本身。然后,我們可以使用更復雜的匯編器來創建一個更高級的匯編器,然后一路走走。

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

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

在上面的思想實驗中,我們考慮了最壞的情況,其中HRRG是地球上唯一的計算機。對于后續機器的設計人員來說,事情變得容易得多,因為他們可以使用現有機器來加快速度。

例如,交叉匯編程序是一種匯編程序,可以將指令轉換為用于運行該計算機的計算機以外的計算機的機器代碼。我在HRRG上的同謀者EEWeb專家Joe Farr創建了一個在PC上運行的HRRG交叉匯編器,它采用HRRG的匯編語言編寫程序,并生成可在HRRG上運行的可執行機器/目標代碼。下面的兩個圖像顯示了同一程序段的源代碼版本和目標代碼版本。

o4YBAGCcw2eACX6tAAX69Kl0R5E126.png

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

pIYBAGCcw3aANNMRAATla0FLpqw077.png

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

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

舉一個簡單的例子,HRRG的指令集不包含HALT指令。但是,我們可以使用HRRG的匯編語言將這樣的指令實現為宏,如下所示:

.MACRO HALT

OR %0010, S1

.ENDMACRO

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

編輯:hfy

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

    關注

    31

    文章

    5357

    瀏覽量

    120658
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10879

    瀏覽量

    212187
收藏 人收藏

    評論

    相關推薦

    TMS320C6000匯編語言工具v7.4用戶指南

    電子發燒友網站提供《TMS320C6000匯編語言工具v7.4用戶指南.pdf》資料免費下載
    發表于 12-30 16:42 ?0次下載
    TMS320C6000<b class='flag-5'>匯編語言</b>工具v7.4用戶指南

    TMS320C6000匯編語言工具 v8.3.x

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

    ARM匯編語言工具

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

    TMS320C28x匯編語言工具

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

    TMS320LF240x DSP的C語言和匯編代碼快速入門

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

    計算機存儲系統的構成

    Memory),再到輔助存儲(Auxiliary Memory),每一層都有其特定的功能和特點。以下是對計算機存儲系統構成的詳細解析。
    的頭像 發表于 09-26 15:25 ?1110次閱讀

    RISC-V匯編語言

    一、導言 從 C 程序翻譯成為可以在計算機上執行的機器語言程序的四個經典步驟。這一章的內容包括了后三個步驟,不過我們要從匯編語言在 RISC-V 函數調用規范中的作用開始說起。 上圖從C源代碼翻譯
    發表于 08-19 18:07

    DRAM在計算機中的應用

    DRAM(Dynamic Random Access Memory,動態隨機存取存儲)在計算機系統中扮演著至關重要的角色。它是一種半導體存儲,用于存儲和快速訪問數據,是計算機主內存
    的頭像 發表于 07-24 17:04 ?1325次閱讀

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

    Ripes OnLine RISC-V 模擬網址 RISC-V 旨在簡化。在線 Ripes 模擬可讓您運行匯編代碼,而無需在計算機上進行任何安裝。 Ripes.me 網頁 轉到網頁
    發表于 06-28 14:59

    PLC編程語言和C語言的區別

    在工業自動化和計算機編程領域中,PLC(可編程邏輯控制)編程語言和C語言各自扮演著重要的角色。盡管兩者都是編程語言,但它們在多個方面存在顯
    的頭像 發表于 06-14 17:11 ?2992次閱讀

    請問在STM32CubeIDE下如何嵌入匯編語言代碼?

    在STM32CubeIDE下如何嵌入匯編語言代碼??
    發表于 03-25 06:56

    計算機最核心的——CPU

    在CPU的四個結構中,寄存的重要性遠遠高于其余三個,為什么這么說?因為程序通常是把寄存作為對象來進行描述的。而說到寄存,就不得不說到匯編語言,說到
    發表于 03-13 14:04 ?2006次閱讀
    <b class='flag-5'>計算機</b>最核心的——CPU

    【RISC-V開放架構設計之道|閱讀體驗】匯編語言和擴展指令集

    【RISC-V開放架構設計之道|閱讀體驗】匯編語言和擴展指令集 匯編語言 將C語言翻譯成可執行的機器語言的重要步驟包括編譯過程,匯編過程,鏈
    發表于 02-03 13:29

    汽車ECU編程是單片機C語言還是匯編語言?

    汽車ECU編程是單片機C語言嗎?還是匯編語言?
    發表于 01-26 06:08

    C語言能夠實現單片機功能,為什么還要使用匯編呢?

    ,但在某些特定的場景下,使用匯編語言仍然是必要的。在本文中,我們將探討為什么在一些特殊情況下使用匯編語言是有必要的。 首先,匯編語言可以提供更高的性能。由于C語言是高級
    的頭像 發表于 01-15 14:59 ?1095次閱讀
    主站蜘蛛池模板: 91大神在线精品网址| 亚洲视频一区网站| 特黄一级| 色婷婷久久| 天天色天天射综合网| 国产婷婷色一区二区三区深爱网| 免费一级特黄特色黄大任片| 久久夜色精品国产飘飘| 黄色a网| 国产成人精品高清在线| www.色亚洲| 午夜精品久久久久久影视riav | 中文字幕一区二区三区四区五区人| 久久久黄色大片| 午夜视频在线网站| 在线播放ww| 色视频在线网站| 久久综合九色综合97婷婷群聊| 黄色短视频软件| 337p亚洲精品色噜噜狠狠| 天天激情| 在线播放视频网站| 亚洲播放| 婷婷丁香综合网| 久青草免费视频| 又长又大又粗又硬3p免费视| 欧美天天射| 看大片全色黄大色黄| 男男浪荡性受高hnp肉| 天天在线天天在线天天影视| 天天舔天天干天天操| 国产精品久久久亚洲第一牛牛| 久久久久性| 国产一级特黄aa大片免费| 天天做天天爱天天综合网| www.色黄| 国产成人毛片亚洲精品不卡| 色人在线| 成年人一级毛片| 国产美女久久久久| 国产在线精品一区免费香蕉|