文章開頭我只想問乙個問題:寫了很多**,你不好奇**在計算機底層是什麼樣的嗎?
下面將一步一步探索這個過程。首先,大家要有個初步的認識,一次從左到右進行編譯、彙編。
高階語言(c語言)綜上所述,大家應該知道為啥$a0 即為 a,$a1即為b,$a2即為c了。接下來,我們繼續,組合語言怎麼轉換成二進位制程式語言。想必大家都了解到,無論什麼程式,最後在計算機底層都是 0 1 存在的。int add(int a,int b)
void main()
接下來我們繼續,相比大家都想知道組合語言是怎麼轉成二進位制機器語言。以下是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
因此針對上面轉換,可以得到:
組合語言opadd:
add $a2,$a0,$a1 //c=a+b
add $v0,$a2,$zero
jr $ra
}
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...