明天就要上班了...
给自己一点安慰
不上白不上, 上了不白上
努力加油, 徵求自我介绍范例:)
今天要来看第一个Lab中的source跟所需的linker script
SECTIONS
{
. = 0x80000;
.text : { *(.text) }
}
这里因为aarch64架构的定义, 起始位置为0x80000
所以我们也把text段摆在这个位址上, CPU就可以直接衔接进入点
.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] 保守型投资 - 「只买不卖」策略真的赚?
注:发文日和截图的日期不一定是同一天,所以价格计算上和当日不同,是很正常的。 声明:这一系列文章并无...
「鲑鱼均,因为一场鲑鱼之乱被主管称为鲑鱼世代,广义来说以年龄和脸蛋分类的话这应该算是一种 KNN 的...
资列页(16kb大小)的结构有7个部分 1.使用者纪录(user records) 2.空闲空间(f...
Download free KingRoot App for your Smartphone tha...
我们公司换防火墙之後 别台电脑对子公司网站登入 网页却可以正常开启 登入却一直显示帐号密码错误 只有...