前言
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",说白了加了一层函数调用,不晓得为啥要这样)
实验结果
很明显能用