91直播在线观看免费-91制片厂爱豆传媒入口-91制片厂爱豆传媒网址-91制片厂果冻传媒天-91制片厂果冻传媒余丽-91制片厂色版在线观看-91制片厂在线免费观看-91制片厂制作传媒网-91制片厂制作传媒网站-91制片厂制作传媒网站9

當前位置: 首頁 > 產品大全 > 計算機組成原理 第四章 指令系統第二部分——匯編語言與函數調用

計算機組成原理 第四章 指令系統第二部分——匯編語言與函數調用

計算機組成原理 第四章 指令系統第二部分——匯編語言與函數調用

第四章 指令系統第二部分:基本的匯編語言和函數調用

在深入理解計算機組成原理時,指令系統是連接硬件與軟件的橋梁。本章的第二部分將聚焦于一個更貼近程序員視角的層面:如何使用指令來構建更復雜的邏輯——即通過基本的匯編語言編寫程序,并理解程序中的一個核心機制:函數(或過程)調用

一、從指令到匯編語言

機器指令是二進制的,難以直接閱讀和編寫。因此,匯編語言應運而生,它用助記符(如MOV, ADD, JMP)來代表機器指令,用標號和符號地址來代表內存地址,極大提升了程序的可讀性和可編寫性。

一個簡單的匯編程序通常包含:

  1. 指令語句:直接對應機器指令,是程序執行的操作。
  • 例如:ADD R1, R2, R3 (將寄存器R2和R3的值相加,結果存入R1)。
  1. 偽指令(匯編指示):指導匯編器如何工作,本身不生成機器碼。
  • 例如:.data 定義數據段,.text 定義代碼段,.word 0x1234 在內存中分配一個字并初始化。
  1. 標號:代表其所在位置的地址,用于跳轉或數據引用。
  • 例如:loop:array_start:

二、函數調用的核心機制

函數調用是結構化編程的基石。在匯編層面,一次函數調用遠不止一條CALLJAL(跳轉并鏈接)指令那么簡單,它涉及一個標準化的協議,以確保調用者和被調用者能正確協作,并在調用結束后恢復現場。這個協議的核心是棧(Stack) 的使用。

一個完整的函數調用過程通常包括以下步驟:

1. 調用者(Caller)的準備工作

  • 傳遞參數:按照約定(如使用特定寄存器$a0-$a3,或壓入棧中)將函數參數準備好。
  • 保存返回地址:在跳轉到函數之前,需要保存下一條指令的地址(返回地址)。在MIPS架構中,JAL指令會自動將返回地址存入$ra寄存器。在其他架構或復雜調用中,可能需要手動壓棧保存。

2. 控制權轉移

  • 執行 CALL FunctionNameJAL FunctionAddress 指令,跳轉到被調用函數的起始地址。

3. 被調用者(Callee)的序幕(Prologue)

函數開始執行時,首先要建立自己的棧幀。

  • 移動棧指針:通常通過減少棧指針(如 SUB $sp, $sp, framesize)來在棧上分配一塊空間,作為本函數的“工作區”(棧幀)。
  • 保存現場:保存那些在函數中會被修改,但調用者希望保持原值的寄存器(稱為被調用者保存寄存器,如s0-s7)。通常將它們壓入新分配的棧幀中。
  • 設置幀指針(可選但常見):設置一個幀指針寄存器(如$fp)指向當前棧幀的固定位置,便于訪問局部變量和參數。

4. 函數體執行

  • 在分配的棧幀空間中進行計算,可以使用局部變量(通過棧指針或幀指針的偏移量訪問),也可以訪問傳遞進來的參數。

5. 被調用者的收尾(Epilogue)

函數執行完畢,準備返回。

  • 設置返回值:將返回值存入約定的寄存器(如$v0, $v1)。
  • 恢復現場:從棧中彈出并恢復之前保存的被調用者保存寄存器的值。
  • 恢復棧指針:增加棧指針(如 ADD $sp, $sp, framesize),釋放本函數的棧幀。
  • 返回:執行 RETJR $ra 指令,跳轉回調用者保存的返回地址處。

6. 調用者的后續工作

  • 獲取返回值:從約定的寄存器中讀取函數的返回值。
  • 清理棧參數(如果參數通過棧傳遞):調整棧指針,移除之前壓入棧的函數參數。

三、計算機系統服務與系統調用

應用程序運行在操作系統的管理之下,當它需要操作系統內核提供的服務時(如讀寫文件、申請內存、在屏幕輸出字符),不能直接訪問內核代碼或數據。這時就需要通過一個受控的接口——系統調用

在匯編層面,發起一個系統調用的過程與函數調用類似,但更為嚴格:

  1. 設置系統調用號:將代表所需服務的唯一編號放入一個特定寄存器(如MIPS的$v0,x86的eax)。
  2. 設置調用參數:將系統調用的參數按約定放入指定的寄存器或內存位置。
  3. 執行陷入指令:執行一條特殊的指令(如MIPS的syscall,x86的int 0x80sysenter)。這條指令會觸發一個異常陷阱,使CPU從用戶模式切換到內核模式,并跳轉到內核中預先定義好的系統調用處理程序。
  4. 內核服務:操作系統內核驗證請求,執行相應服務(如操作硬件)。
  5. 返回結果:內核將執行結果(或錯誤碼)放入約定好的寄存器(如MIPS的$a3存錯誤碼,$v0可能被修改),然后返回到用戶程序中syscall指令的下一條指令繼續執行。

###

理解基本的匯編語言和函數調用機制,是洞悉高級語言程序如何在底層CPU上運行的關鍵。棧幀管理是函數調用的精髓,它保證了程序的模塊化、遞歸調用和局部變量的隔離。而系統調用則是用戶程序與操作系統內核通信的橋梁,是計算機系統服務得以安全、統一提供的基礎。通過這兩部分的學習,我們能夠更好地將指令系統的硬件特性與軟件系統的運行需求聯系起來,構建起完整的計算機系統層次化視圖。

如若轉載,請注明出處:http://www.tj-com.cn/product/65.html

更新時間:2026-06-18 12:44:40

產品大全

Top 主站蜘蛛池模板: 国产一级二级无码 | 国产综合成人 | 国产99高清电影 | 自拍无码视频亚洲 | 哪里有A片网址 | 欧美午夜看片 | 久久深夜福利视频 | 91国产视频在线 | 黄色无码网站 | 国产在线观看播放 | 国产第一页精品 | 黄色性爱网址 | 国产操逼一区二区 | 嫩草影院黄片 | 亚洲黄片天堂 | 手机国产在线 | 成人午夜网 | 国产亚洲欧美在线 | 最新色网蜜桃在线 | 日韩精品页 | 欧欧美日逼片播放 | 午夜福利视 | 国产视频免费播放 | 日韩另类第一夜 | 日韩深夜激情影院 | 久草视频最新 | 另类图片操操操 | 欧洲福利影院四区 | 结衣波多野在线 | 欧美性生爱 | 精品欧美精品v | 国产主播一区在线 | 伦理片精油按摩 | 另类成人欧美 | 亚洲欧美综合另类 | 最新国产一区二区 | 欧美色图激情文学 | 欧美内射www | 三a级免费黄毛片 | 欧美精品视屏 | 日韩免费播放 |