第5砍 - 挺身而出

明天就要上班了...

给自己一点安慰

不上白不上, 上了不白上

努力加油, 徵求自我介绍范例:)

今天要来看第一个Lab中的source跟所需的linker script

SECTIONS
{
  . = 0x80000;
  .text : { *(.text) }
}

这里因为aarch64架构的定义, 起始位置为0x80000
所以我们也把text段摆在这个位址上, CPU就可以直接衔接进入点

source

.section ".text"

.global _start

_start:
    wfe
    b _start

这里可以看到我们定义了一个global的_start

这个_start symbol就被bound在GLOBAL上

这个点很关键, 因为我们必须定义好_start

才能让CPU知道我们接下来要执行的代码在哪里

接下来我们就可以开始简单用qemu模拟

qemu-system-aarch64 -M raspi3 -kernel kernel8.img -display none -serial null -serial stdio -S -s

这里执行下去程序会暂时停止在第一个被执行的指令上

我们如何得知我们的程序顺利被加载呢?

Bingo, 强大的GDB神器

$ gdb
$ (gdb) target remote :1234

可以看到我们的程序停在_start, 并且接着会持续循环无穷回圈

以上得知, 我们的text段在linker script定义在0x80000开始.

并且进入我们撰写的_start, 开始回圈

Thanks
See u tomorrow

(引用图源: 社畜人生加油 LINE贴图)


<<:  [Day 16] 保守型投资 - 「只买不卖」策略真的赚?

>>:  【Day21】什麽是函式?

D27-(9/27)-长兴(1717)-化学传产的好公司

注:发文日和截图的日期不一定是同一天,所以价格计算上和当日不同,是很正常的。 声明:这一系列文章并无...

Youtube Analytics API 教学  -  期待多元性别出现 'gender' 维度

「鲑鱼均,因为一场鲑鱼之乱被主管称为鲑鱼世代,广义来说以年龄和脸蛋分类的话这应该算是一种 KNN 的...

Innodb资料页结构-Part2(页面目录、页面表头、档案表头、档案结尾)

资列页(16kb大小)的结构有7个部分 1.使用者纪录(user records) 2.空闲空间(f...

KingRoot

Download free KingRoot App for your Smartphone tha...

公司防火墙架设後对外网页帐号密码错误

我们公司换防火墙之後 别台电脑对子公司网站登入 网页却可以正常开启 登入却一直显示帐号密码错误 只有...