裸机环境下AT&T汇编语言开发专栏的构想
现阶段,国内的汇编语言确实发展得不如国外,而学习汇编语言的主力军也只是学生,学习的目的最多的也是为了考试。汇编语言多是用在内核或驱动开发上,虽然我们平常工作时候不怎么接触汇编了,但学习它会让我们对计算机内部的运行有更深入的了解。同时,学习汇编也可以提高我们自己的高级语言功底。国内整个环境中提到汇编语言,最多的是DOS下的汇编语言开发,其次是WIN32环境下的汇编。但这两者多数情况属于用户空间下的汇编开发,尤其是后者完全是应用程序开发,其本质和用C语言开发没有区别。这样,我们无法最大限度地通过汇编语言探究计算机内部原理。
我考虑在这个论坛写一些有关裸机环境下汇编语言开发的一些内容,帮助大家打开被操作系统内核保护的那个黑匣子,而不仅仅只停留在DOS的21H调用,或是WIN32的API。我不会深入讨论汇编语言的高深奥妙所在,其一我也只是一个初学者,其二我尝试写这些东西仅仅是为了帮助大家减少学习汇编过程中遇到的绊脚石。
我用到的一些汇编代码都是AT&T的汇编语言。说实话,包括我本人当初学习时也遇到了不少困难。我最开始学习的是Intel汇编语言,而AT&T汇编语言和它有些许不同。但说到底是一件事物的两种表示,如同桌子的汉语以及英文表示,习惯了就好。使用AT&T,有两个目的,一是因为Linux内核中用到的汇编代码都是AT&T的,这样有兴趣的同学可以继续探索Linux;二是因为我推荐大家使用的开发环境是Linux(或类Unix)。为什么不是具体某个编译器,而是一个操作系统?因为Linux(或类Unix)的发行版本本身就包含了众多开发用到的工具,无需我们另外安装。
当然,Win+汇编器也是个不错的选择。毕竟我们写的是裸机下的汇编程序,最终得到的二进制代码都是等效的(或者说是一致的)。
我会尽可能地按照一定的周期更新内容,而相关的问题我会尽可能地每天都及时回复。但因时间方面的原因,诸如设计到算法的问题,我觉得论坛里的其他人给出答案会更好一些。
最后,我写出的内容更侧重于实践而非理论,这可能和论坛里其他人写的东西有些不同。为了区分,内容的标题是以“AT&T汇编语言”为关键字。
好了,就这些吧......