红尘踏破逍遥境
回首何处是人间
终于,这只慢吞吞的轮子跑了起来。
几年前还在第八军团当斑竹的时候,认识了前任斑竹影子。
当时我们不是很熟,在QQ上聊了几句,后来扯到了梦想的话题。
我当时最大的梦想是写一个OS,也许和小时候的偶像是比尔盖茨有关。
没过多久影子就去了异国,之后通过几次email,现在早已断了联络。
在他以前的blog上看到有人留言要影子哥的汇编器。
当时对我而言,汇编器是个相当高级的东西,于是兴致勃勃地想自己写一个。
于是发email向影子取经,结果得知他已经把程序连版权卖给一个国外的公司了。
他说了一句对我影响很大的话,“除非计算机出现革命性的变革,否则C和汇编永远不会过时”。
那时候我还没从高中接触的java理论中摆脱出来,还在炫耀各种技术和高深的术语,却连一行代码也写不出来。
很长的一段时间里,我都是在慢慢地搜集相关源码和资料,直到去年下半年真正开始写的时候,陆陆续续遇到了很多自己不想遇到的问题,中间还因为庸人自扰而耽搁了好些时间。
又很难静下心来看那又长又酸的intel手册,虽然如此,但从没想过放弃。
这是很奇怪的事,似乎在几年前我还什么都不懂的时候,我就已经相信并确定了我会弄出这么一个东西。
在dev-c下新建工程,一点一点扩展程序功能,一遍一遍调试各种错误(Dev-c的调试功能有时候会占用相当多的cpu资源不释放),一张白纸在折了N次之后都有些皱了。
也许是因为Intel的复杂指令系统相当怪异,我居然都有些理解自己慢吞吞的作风了。
现在总结起经验来,只有几句话而已:
一遍扫描,计算指令大小,填充符号表
二遍扫描,分析并填充指令结构。
输出文件,前缀=>指令码=>ModR/M=>SIB=>位移=>立即数

现在想想,纸上谈兵还真容易。
现在想想,影子的汇编器应该是个ide吧,他还添加了网络验证功能。
现在想想,自己还是不够成熟啊。

发表回复 取消回复