C語言如何轉換成計算機底層的二進位制語言(MIPS)

2021-10-04 02:53:04 字數 1735 閱讀 8242

文章開頭我只想問乙個問題:寫了很多**,你不好奇**在計算機底層是什麼樣的嗎?

下面將一步一步探索這個過程。首先,大家要有個初步的認識,一次從左到右進行編譯彙編。

高階語言(c語言) 

int add(int a,int b)

void main()

綜上所述,大家應該知道為啥$a0 即為 a,$a1即為b,$a2即為c了。接下來,我們繼續,組合語言怎麼轉換成二進位制程式語言。想必大家都了解到,無論什麼程式,最後在計算機底層都是 0 1 存在的。

接下來我們繼續,相比大家都想知道組合語言是怎麼轉成二進位制機器語言。以下是mips指令各字段的命名以及含義。分為i型以及r型兩類指令格式。

r型:用於暫存器,進行邏輯運算,如加減操作。

oprs

rtrd

shamt

funct

6位5位

5位5位

5位6位

i型:用於立即數,即立即數與資料傳輸指令,如sw,lw等操作。

oprs

rtconstant and adress

6位5位

5位16位

指令格式

oprs

rtrd

shumt

hinct

address

addr

regreg

regn. a.

iw (load word)

ireg

n. a

n. a

n. a

n. a

address

因此針對上面轉換,可以得到:

組合語言                                             

add: 

add  $a2,$a0,$a1  //c=a+b                    

add  $v0,$a2,$zero              

jr      $ra        

}

op

rsrt

rdaddress/shumt

hinct

0$a0

$a1$a2

0add

0$v0

$a2$zero

0add 

0$ra00

0jr轉換到對應數字後:

oprs

rtrd

address/shumt

hinct0 2

032031

0008

轉換為二進位制:

oprs

rtrd

address/shumt

hinct

100000 

000000 

00010

00000

100000

000000

11111

00000

00000

00000

001000

到這裡,相必大家都有點感覺了,實際乙個程式的指令是涉及很多指令計算的。遠遠超過以上三條,因此大家需要去強化學習,加深對計算機的理解。 

[1]計算機組成與設計:硬體/軟體介面(原書第5版).北京:機械工業出版社,2015.

計算機中實現10進製轉換成二進位制c程式設計

int dectobe int n printf d n result return result int main int argc,char const ar 演算法分析 在實現模2取餘後需要逆序輸出,這個地方通過不斷乘以10來實現後一位比前一位的位數多10,不需要再通過陣列或者逆序函式來實現。...

C語言轉換成C 語言時,強制轉換的意義和實現

在c語言中,定義如下的結構型別,這個是正確的定義 struct student st malloc sizeof struct student 但是在c 語言中,需要按照如下的定義強制轉換 struct student st struct student malloc sizeof struct s...

C語言實現字母的大寫轉換成小寫

3 改進 參考資料 程式功能 實現字母的大小寫轉換。輸入乙個大寫字母,接著按下回車,第二行就輸出小寫字母。注意 每次只能輸入乙個字母,否則出錯。程式設計軟體 visual studio 2019 define crt secure no warnings 1 include intmain scan...