有关Stack Frame中有两个重要的寄存器,第一个是SP(Stack Pointer),它指向Stack的底部并代表了当前Stack Frame的位置。第二个是FP(Frame Pointer),它指向当前Stack Frame的顶部。因为Return address和指向前一个Stack Frame的的指针都在当前Stack Frame的固定位置,所以可以通过当前的FP寄存器寻址到这两个数据。 我们保...
The stack grows downwards and the stack pointer shall be aligned to a 128-bit boundary upon procedure entry. 为什么要求128位对齐?RISC-V在设计的时候已经在考虑128位系统,即RV128I,RV128I的通用寄存器是128位宽的。如果是RV32E,那么堆栈只要32位对齐就可以了。
1.栈指针(Stack Pointer, SP):栈指针用于存储栈顶地址,是栈帧结构的核心部件。 2.栈帧(Stack Frame):栈帧是栈中一段连续的内存区域,用于存储局部变量、函数参数和临时数据。 3.栈帧指针(Stack Frame Pointer, FP):栈帧指针用于存储当前栈帧的地址,方便在执行过程中切换不同的栈帧。 4.栈保护(Stack Protect...
sp(stack pointer) Volatile Registers(CalleR Saved) 这些寄存器可以被CalleE自由的改变 如果calleR需要他们,他必须在程序调用之前把值存储起来 t0-t6(temporary registers) a0-a7(return address and arguments) ra(return address) 综上所述,寄存器就分为两种: ...
RISC-V MCU启动文件分析 启动文件由汇编语言编写,是MCU上电复位后第一个执行的程序。主要执行以下内容: 初始化gp(global pointer)全局指针寄存器、sp(stack pointer)栈指针寄存器 将data数据从flash中加载至RAM中 清空bss段数据 初始化中断向量表
x2 sp Stack pointer Caller x3 gp Global pointer -- x4 tp Thread pointer -- x5-7 t0-2 Temporaries Caller x8 s0/fp Saved register/frame pointer Caller x9 s1 Save register Caller x10-11 a0-1 Function arguments/return values Caller
RISC-V架构就是为了解决这个问题的!RISC-V最早在2010年起源于加州大学伯克利分校,由于受够了现有处理器架构的复杂性和相关知识产权的限制,伯克利大学决定发明一种全新的、简单且开放免费的指令集架构。 从名字可以看出,RISC-V就是RISC的第五代指令集架构。而RISC-V目标就是“成为一种完全开放的指令集架构,可被任何...
在Cortex-M3架构中,中断处理过程中使用了两个栈指针(Stack Pointer,SP),即主栈指针(Main Stack Pointer,MSP)和进程栈指针(Process Stack Pointer,PSP)。其中,MSP用于处理异常和中断,而PSP用于处理线程模式下的堆栈。 当中断请求被触发时,Cortex-M3会自动将当前的寄存器状态(即现场保护)压入MSP指向的栈中,然后将MS...
stack ORIGIN(RAM) + LENGTH(RAM) - __stack_size: { . = ALIGN(4); PROVIDE(_susrstack = . ); /*ASSERT ((. > 0x5000),"ERROR:No room left for the stack");*/ =. + __stack_size PROVIDE( _eusrstack = ); } >RAM RISC-V gp全局指针寄存器说明 gp,global pointer...
栈( stack):一种后进先出的队列。栈需要一个指向栈中最新分配地址的指针,以指示下一个过程应该放置换出寄存器的位置或寄存器旧值的存放位置。在 RISC-v中,栈指针( stack pointer)是寄存器×2,也称为sp。将数据放入栈中称为压栈,从栈中移除数据称为 弹栈。栈按照 从高到低的地址顺序“增长”,通过减栈指针...