1. 程式人生 > 其它 >xv6 lec5 Calling conventions and stack frames RISC-V

xv6 lec5 Calling conventions and stack frames RISC-V

5.1 C程式到彙編程式的轉換

  • RICS-V處理器就是可以理解RISC-V指令集的處理器,任何一個處理器都有一個關聯的ISA(Instruction Sets Architecture)

5.2 RISC-V vs x86

  • RISC-V是精簡指令集,而x86是(Reduced Instruction Set Computer),而x86是複雜指令集CISC:區別在於
    • RISC指令數更少
    • RISC指令更簡單,一般不會一條指令做複雜的操作
    • RISC開源
  • 為什麼現在還大部分在使用x86,雖然x86只是效能高,但是複雜並且不安全?其實intel實現了安全相關的enclave,intel還實現了一些特定的高效運算,當讓把軟體全部轉到risc-v需要時間

5.3 gdb和彙編程式碼執行

5.4 RISC-V暫存器

  • 彙編語句是在暫存器上執行,而不是在記憶體上執行,也就是說當我們在做add,sub時,我們是對暫存器操作,也就通過load將資料放到暫存器中
  • 為什麼s1與其他s暫存器是分開的?
  • caller saved暫存器是指呼叫者(caller)需要儲存的暫存器,因為其會被呼叫的函式修改
  • stack pointerframe pointer會在函式呼叫開始時被修改,呼叫完會被改回來,所以是callee

5.5 Stack

  • 這裡沒有修改sp等操作的prologue與修改回sp等操作的epllogue的函式是leaf function
  • 非leaf 函式就由prologue與epllogue
  • 非leaf 函式的一開始減少16是用來存放ra(ra就是caller function)

5.6 Struct