日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

mips j指令_计算机组成原理 指令

發布時間:2025/3/12 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mips j指令_计算机组成原理 指令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

CPU 能處理的只有指令,我們寫的程序歸根結底就是指令,高級語言只有翻譯成機器碼,即計算機能夠識別的指令,才能夠被執行。

不同的 CPU 擁有不同的指令集,一般 PC 使用 Intel 的 CPU,iPhone 使用 ARM 的 CPU。所以如果在電腦上寫個程序,裝到手機上,一般無法運行,因為語言不通,而裝到另一臺電腦上,通常能正常運行,就是因為語言相通。

代碼怎樣變成機器碼

來看段 C 代碼,究竟如何變成機器碼的。

// test.c
int main(){
int a = 1;
int b = 2;
a = a + b;
}

要在 Linux 上跑起來,首先需要編譯成匯編語言,然后通過匯編器翻譯成機器碼。通過 gcc 和 objdump 兩個命令,來將對應的匯編和機器代碼打印。

gcc -g -c test.c
objdump -D -S test.o

可以看到,左側有一堆數字,這些就是一條條機器碼;右邊有一系列的 push、mov、add、pop 等,這些就是對應的匯編代碼。一行 C 語言代碼,有時候只對應一條機器碼和匯編代碼,有時候則是對應兩條機器碼和匯編代碼。匯編代碼和機器碼之間是一一對應的。

test.o: file format Mach-O 64-bit x86-64

Disassembly of section __TEXT,__text:
_main:
; {
0: 55 pushq %rbp
1: 48 89 e5 movq %rsp, %rbp
4: 31 c0 xorl %eax, %eax
; int a = 1;
6: c7 45 fc 01 00 00 00 movl $1, -4(%rbp)
; int b = 2;
d: c7 45 f8 02 00 00 00 movl $2, -8(%rbp)
; a = a + b;
14: 8b 4d fc movl -4(%rbp), %ecx
17: 03 4d f8 addl -8(%rbp), %ecx
1a: 89 4d fc movl %ecx, -4(%rbp)
; }
1d: 5d popq %rbp
1e: c3 retq

這里可以想象一下,高級語言轉換成機器碼,為什么要多出中間一步轉換,即先轉換成匯編代碼,如果直接轉換有哪些不妥?

CPU 如何解析機器碼

當 CPU 拿到一條指令(一條機器碼)的時候,就會去對應的指令集中看,這條指令是什么操作。

這里介紹一下最簡單的 MIPS 指令集。

MIPS 的指令是一個 32 位的整數,高 6 位叫操作碼(Opcode),也就是代表這條指令具體是一條什么樣的指令,剩下的 26 位有三種格式,分別是 R、I 和 J。

R 指令是一般用來做算術和邏輯操作,里面有讀取和寫入數據的寄存器的地址。如果是邏輯位移操作,后面還有位移操作的位移量,而最后的功能碼,則是在前面的操作碼不夠的時候,擴展操作碼表示對應的具體指令的。

I 指令,則通常是用在數據傳輸、條件分支,以及在運算的時候使用的并非變量還是常數的時候。這個時候,沒有了位移量和操作碼,也沒有了第三個寄存器,而是把這三部分直接合并成了一個地址值或者一個常數。

J 指令就是一個跳轉指令,高 6 位之外的 26 位都是一個跳轉后的地址。

我們常用的 Intel CPU ,大概 2000 左右個指令集,正對應了上圖中五類操作。

  • 算術類指令

  • 數據傳輸類指令

  • 邏輯類指令

  • 條件分支類指令

  • 無條件跳轉指令

CPU 如何執行指令

還拿 Intel CPU 來說,里面差不多有幾百億個晶體管,通過電路不斷切換運轉起來。邏輯上,可以認為 CPU 其實就是由一堆寄存器組成的。而寄存器就是 CPU 內部,由多個觸發器(Flip-Flop)或者鎖存器(Latches)組成的簡單電路。

觸發器和鎖存器,其實就是兩種不同原理的數字電路組成的邏輯門。

N 個觸發器或者鎖存器,就可以組成一個 N 位(Bit)的寄存器,能夠保存 N 位的數據。

一個 CPU 里面會有很多種不同功能的寄存器。這里介紹三種比較特殊的。

一個是 PC 寄存器,我們也叫指令地址寄存器。用來存放下一條需要執行的計算機指令的內存地址。

第二個是指令寄存器,用來存放當前正在執行的指令。

第三個是條件碼寄存器,用里面的一個一個標記位(Flag),存放 CPU 進行算術或者邏輯計算的結果。

實際上,一個程序執行的時候,CPU 會根據 PC 寄存器里的地址,從內存里面把需要執行的指令讀取到指令寄存器里面執行,然后根據指令長度自增,開始順序讀取下一條指令。可以看到,一個程序的一條條指令,在內存里面是連續保存的,也會一條條順序加載。

而有些特殊指令,比如 J 類指令,也就是跳轉指令,會修改 PC 寄存器里面的地址值。這樣,下一條要執行的指令就不是從內存里面順序加載的了。事實上,這些跳轉指令的存在,也是我們可以在寫程序的時候,使用 if…else 條件語句和 while/for 循環語句的原因。

總結

以上是生活随笔為你收集整理的mips j指令_计算机组成原理 指令的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 在线看日韩 | 明星双性精跪趴灌满h | 88久久精品无码一区二区毛片 | 黄色高清片| 欧美少妇喷水 | 国产精品无码人妻一区二区在线 | 四虎影院污 | 日本九九视频 | 手机看片亚洲 | 色综合中文字幕 | 老色批永久免费网站www | 久久久影视 | 亚洲无遮挡 | 在线看黄色网 | 亚洲男人在线 | 欧美乱子伦 | 久久综合伊人77777蜜臀 | 日韩在线网址 | 黄色免费版 | 黄色一级免费大片 | 亚洲女人毛片 | 噜噜噜色| mm131美女视频| www.精品视频 | 精品国产日本 | 国产丰满麻豆 | 亚洲天天干 | 日韩一级性生活片 | 99精品成人 | 香蕉伊人网 | 一本色道久久综合无码人妻 | 亚洲AV无码成人精品一区 | 日韩av在线看免费观看 | 日韩欧美自拍 | www.国产.com | 麻豆影视在线免费观看 | 少妇偷人精品无码人妻 | 免费看的黄色录像 | 午夜美女福利视频 | 亚洲一区精品视频在线观看 | 在线观看黄色av网站 | 外国电影免费观看高清完整版 | 老司机午夜在线 | 成人 黄 色 免费播放 | 亲切的金子餐桌片段的金子 | 久久久久久久亚洲精品 | 成年人视频在线观看免费 | 国产在线超碰 | 误杀1电影免费观看高清完整版 | 国产亚洲欧美一区二区 | 五号特工组之偷天换月 | 精品欧美黑人一区二区三区 | 成人福利在线视频 | av三级网站 | 亚洲精品大片www | 一级欧美一级日韩片 | 欧美日本一本 | 性综艺节目av在线播放 | 黑料av在线 | 性色AV无码久久一区二区三 | 老司机精品视频在线 | 日韩免费福利视频 | 欧美欧美欧美欧美 | www黄色网 | 影音先锋中文字幕在线 | 亚洲男人天堂2018 | 亚洲区免费 | 亚洲理伦 | 91精品国产一区二区三竹菊影视 | 亚洲美女性视频 | mm131美女视频 | 国产一区在线不卡 | 国产精品拍拍 | 亚洲一区二区视频在线 | 国产精品xx| 亚洲一区二区影视 | 香蕉视频在线网址 | 国产精品伦一区二区三级视频 | 中文字幕av无码一区二区三区 | www久久久 | 国内精品国产三级国产aⅴ久 | 2019亚洲天堂 | 日韩激情网 | 精品亚洲一区二区 | 性欧美18 | 国产精品黑丝 | 自拍偷拍欧美激情 | 成人激情av | 久久国产精品久久 | 女人18毛片水真多18精品 | 精品国产无码一区二区三区 | 狠狠躁夜夜躁av无码中文幕 | 78m78成人免费网站 | 无套内谢少妇高潮免费 | 自拍亚洲欧美 | av猫咪| 五月婷婷激情 | 在线天堂v | 毛茸茸多毛bbb毛多视频 |