iT邦幫忙

2021 iThome 鐵人賽

DAY 2
0
自我挑戰組

杰哥的考研紀錄系列 第 2

Day-2 我也...可以跟電腦娘說話嗎

  • 分享至 

  • xImage
  •  

我也...可以跟電腦娘說話嗎

tags: IT鐵人

首篇不會給大家太多壓力,簡單介紹我們寫出來的程式往下是怎麼被電腦讀取的,本篇以MIPS為ISA討論。

電腦有甚麼零件??

所謂的電腦,英文稱為Computer,而compute的中文為計算,所以電腦的基本功能就是能夠計算,並且如果需要大量快速運算,必定需要存取數據,所以為了造出一台電腦,我們必定需要計算的單元以及儲存的單元。

運算的單元最著名的為ALU(Arithmetic logic unit),它提供了多種運算功能如加減法以及邏輯的AND、OR、XOR等等。

儲存的單元則是有必須在CPU中快速拿出計算的Register、程式當下需要的存取空間Memory,不過以上的儲存空間大小從Register的KB到Memory的MB而已,另外我們會裝的HDD跟SSD才會往上做到GB甚至TB,不過那個不在這次的討論範圍,容杰哥跳過一下。

下圖為CPU以及儲存裝置的示意圖,右邊就是我們插在主機板上一條一條的Memory,底下指的就是HDD或是SSD。

甚麼是ISA

ISA的全名為Instruction Set Architecture,如果說電腦有不同的文化,ISA就是不同的語言,ISA決定了CPU可以執行怎麼樣的指令,或是同樣的一個行為,需要多少個指令才能完成。

杰哥只有碰過兩種ISA,分別為MIPs跟,RISC-V。

MIPS已經存在許久,杰哥一年前修課的時候,教授已經全部使用RISC-V教學了,近期甚至聽說了MIPS要徹底退出,也就是說未來的CPU都不會支援MIPS的ISA了。

不過基本上學會了一種ISA,他的邏輯或是想法基本上都已經接觸過了,換成另外一種不會太困難啦,我也是聽說的,但就現在讀書沒有遇到太大的困難。

指令長怎樣

因為我們寫出來的指令會經過兩層翻譯,第一層稱為Assembly language(組合語言),第二層稱為Machine language,杰哥認為兩者需要分開介紹。

Assembly language

首先是Assembly language,他就是很簡單的語言,我們不能宣告變數,只能使用特定的編號,編號對應到每個Register,MIPS支援的指令如下圖。

instruction

舉例來說,如果我們需要將Register S1跟Register S2中的值相加放進Register S3,那個Assembly language的寫法就會是:

add $S3 $S1 $S2

MIPS規定目的地要放在第一個,另外兩個放在後面。

Machine language

另一個是Machine language,就是我們看到駭客任務中那些0和1,因為電腦只看得懂那些東西。

the matrix

MIPS只有三種類型的指令,分別為R-type、I-type、J-type。
R-type:指定三個Register
I-type:指定兩個Register
J-type:跳躍

每個指令都是32bits,也就是說由32個0或1組成。
只要對照底下的表格,我們就能在Assembly language跟Machine language之間轉換了。

![type](https://i.imgur.com/cg5S3QX.png =50%x50%)

R-type I-type
code code2

比如說剛剛的add $S3 $S1 $S2就變成

000000 10001 10010 10011 00000 100000

跟R-type好好比對就是

op(6) rs(5) rt(5) rd(5) shamt(5) funct(6)
000000 10001 10010 10011 00000 100000

底下是Register的10進位對照表,別忘記轉換成2進位喔~
register

小試身手

In the following problems, the data table contains the values of various fields of MIPS instructions.

a. op = 0, rs = 1, rt = 2, rd = 3, shamt = 0, funct = 32
b. op = 43, rs = 16, rt = 5, immediate = 4

What is the MIPS assembly instruction described above?
What type instruction do the instructions above represent?
What is the binary representation of the instructions above?

答案下回揭曉囉~

上一篇 下一篇
杰哥的考研紀錄 小學數學(bit ver.)

做出來 派大星

派大星


上一篇
Day-1 杰哥的考研紀錄
下一篇
Day-3 小學數學(bit ver.)
系列文
杰哥的考研紀錄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言