RISC-V vs x86
不同处理器使用的指令集(ISA, Instruction Sets Architecture) 不同
RISC-V (Reduced Instruction Set Computer 精简指令集)
x86是一种CISC (Complex Instruction Set Computer 复杂指令集)
| RISC-V | x86 | |
|---|---|---|
| e.g. | SiFive | Intel |
| 指令数量 | 40+条基础指令+模块化扩展可达数百条 | 1500+(向后兼容,历史发展中并未下线任何指令) |
| 指令内容 | 简单工作 | 一系列复杂操作 |
| 开源 | 闭源 | |
| ARM同样也是一个RISC | ||
| Android支持ARM, x86(主流设备是ARM) | ||
| IOS运行在Apple自研的ARM架构处理器上 |
gdb instructions
tui enable 打开图形界面
layout asm 显示汇编代码
layout reg 显示寄存器信息
layout split 显示源码和汇编代码
info reg / i reg 打印寄存器信息
delete / d 删除所有断点
i frame / info frame 打印stack frame有关信息
bt / backtrace 打印从当前调用栈开始所有stack frame (如果要查看其中某个栈 frame 3 i frame)
watch i 当i的值改变时打印相关信息
RISC-V registers

Caller 寄存器在函数调用时不会 保存 (e.g. ra return address)
Callee 寄存器在函数调用时会被保存
Stack
函数每次被调用时,会给自己创建一个stack frame
stack从高地址开始向低地址使用,向下增长
return address 总是会出现在stack frame的第一位
To Prev. Frame 指向前一个栈的指针会出现在栈中可预测的位置
两个重要寄存器:SP(stack pointer) 指向stack底部代表当前stack frame的位置,FP(Frame Pointer) 指向stack顶部,可用于寻址return address & To Prev. Frame
