接上一话题,我们声明了各个段的地址, 这个部分是更为详细的说明各个段,相当于在各个段中开始定义变量了。

.section ".text.boot" /*启动程序段*/

.globl _start /*声明一个全局函数,*/
_start:/*函数的名称*/
    /* setup stack with 4KB size */
    la sp, stacks_start /*加载标签 stacks_start 的地址到栈指针寄存器 sp*/
    li t0, 4096
    add sp, sp, t0

    /* goto C */
    tail sbi_main /*函数调用,*/

.section .data
.align  12
.global stacks_start  /*定义全局变量, 栈开始的地方, 但是, 这个栈是在数据段中声明的*/
stacks_start:
    .skip 4096 /*在当前位置保留 4096 字节的空间。这通常用于为栈分配内存。*/
高地址
0x80002000  <- sp (栈顶)
+------------------+
|                  |
|                  |
|                  |
|                  |
+------------------+
0x80001000  <- stacks_start (栈底)
低地址

putao
8 声望3 粉丝

推动世界向前发展,改善民生。


« 上一篇
链接脚本--02