GNU ARM汇编--(一)开篇
在大学的时候,汇编就是学的很烂.一是对汇编这门语言没概念,二是那些指令集很难记清楚,用的机会也少,自然学的不好.但是现在觉得相当有必要重头学习一下汇编.部分原因我在上一篇写完设备模型的总结时提到了而.最近在看一本书《ARM:Assembly Language Programming》,作者是Peter Knaggs & Stephen Welsh.作者在开头也提出学习汇编的必要性和重要性,借他们的话重新说一下:
他们首先用三个问句来引出为什么要学习汇编:
外科医生为了知道手术刀的用法而需要学习冶金吗?飞行员需要学习热力学理论来理解飞机引擎是如何工作的?报社的记者要学习电子学来理解照相机如何工作的?答案当然是“NO”,那么为什么要让学生学习汇编语言和计算机结构呢?
第一就是教育和培训不是一码事,大学就应该学大学里该教的内容,当然学生也得好好学.
第二是汇编语言是计算机体系结构和计算机软件的基础
第三:汇编可以帮助我们更好的理解数据类型,指针,堆栈、函数调用、递归调用以及参数传递,汇编可以更直接的访问IO和设备,帮助理解设备驱动等等.
总之汇编会告诉我们计算机系统内部正在发生什么
而按照目前我个人的体会是:
学习汇编可以让我更好的写C,学习汇编可以让我更好的理解loader,学习汇编可以让我更好的理解进程和内存管理,虚拟存储器和存储器映射等知识.总之,好处多多.目前汇编成了我的一个瓶颈,那搞定它可以让我上一个台阶.
接下来学习汇编的环境为:操作系统为ubuntu,编译器是arm-linux-gcc,平台是s3c2440(ARM920).
ARM汇编的指令集就那些,但是windows下的arm汇编和linux的arm汇编有细微区别.windows下是用ADS codewarrir等环境来开发,编译器是armasm,而linux用的是gnu arm,更个接近于AT&T风格.偏向于linux下的环境,所以就选择了GNU ARM汇编.
学习GNU ARM汇编的计划和目标:
ARM体系结构
ARM下的指令集
GNU汇编的风格
在s3c2440平台上的验证
当然最终的目的还是为了学习loader和linux.
开始吧,新的学习目标~~~