前言
30天自制操作系统(下简称30d)作者给出了工具包,NASK汇编器他自己写的.但是我怎么看怎么不爽,我想自己写os,凭啥主函数要命名"纸娃娃"?!!!但书中说了,只能这样,我偏不信嘞.
分析+实现
咱一步步来.首先是必须指定入口点,不然程序从哪跑.
看一下makefile:
“规则文件”,很好,打开这个文件试试:

azaz是日语,翻一下试试:

什么嘛不懂,下一句:

还是不懂啊,再下一句:

看见没!这部分就是入口点函数.
看哈子内容,_HariMain,果然
顺便提一句,C中函数都会编译成前面加个下划线
几天前用IDA解析了上面的lib,没看出个所以然,这次,直接改入口点试试:
format:
/* このセクションでリンクの方針を記述 */
code(align:1, logic:0x24, file:0x24);
data(align:4, logic:stack_end, file:code_end);
file:
/* このセクションでコマンドラインに書ききれなかった
.objファイル、.libファイルを記載 */
/* なお、このセクションはフルパスで書いてもよい。 */
/* 例: c:/osask/gg00libc.lib; */
//../z_tools/haribote/harilibc.lib;
//../z_tools/haribote/golibc.lib;
label:
/* 必ずリンクしなければいけないラベルを指定 */
/* エントリポイントを指定すればいいと思ってください */
_MonkeyMain;
/* 上記3セクションの順序は入れ替えてはいけません! */
鬼晓得这玩意啥语法,自己看着办,比如我这里把入口点改成了MonkeyMain,顺便注释掉那两个lib(为啥?我解析试试发现就写了个空的"Hari啥啥啥"的,忘了返回"_HariMain",说白了加了一层函数调用,不晓得为啥要这样)
实验结果
很明显能用
本文记录了作者在30天内自制操作系统的尝试过程,包括对提供的工具包进行分析及修改,特别是更改了主函数的入口点名称,并对链接脚本进行了详细解读。
6192

被折叠的 条评论
为什么被折叠?



