你好 !
我想咨询下,我想用汇编语言来编写ARM程序 但是不知道从何处下手 问问有没有像C语言那样的固件库文件 是用汇编语言给编写的
你好,你提的问题很好,请问你是用Cortex-M的芯片吗?
是用的哪个开发工具环境?
我用的是cotex-M 芯片 我也有同样的疑问,用keil可以吗。该怎么开始学习?我看过arm汇编语言的介绍了。但是还是一头雾水
如果没有汇编语言基础的,建议用C。比较简单,容易上手。Cortex-M系列并不像51那样,包括个头文件就行了。如果你是使用库文件的话,容易开发。直接调用函数就可以了,但是前提是你要配置好Keil,同时建立好工程,而且建立工程并不是一件简单的事情,过段时间我考试完了我贴一个详细的教程。库文件开发模式是相对简单的,但是移植起来比较困难,因为个人的编程风格不一样的话移植报错很多。另外一种模式是跟C一样的,属于寄存器开发,难度大,但是程序效率高,前提是你能掌握寄存器的用法,不建议新手使用。
汇编是一种理解系统很好的方式。
鉴于你已经有一些汇编指令的基础,下面你可以学习一些开发板自带的样例来强化你这方面的知识,一般来说,用来学习的开发板都自带一些例程,你可以找其中一个简单的C语言例程,把它在开发板上调通,理解它在干什么。下面再来用Keil单步调试这个例程,在调试的过程中,你可以打开汇编窗口(View->disassembler view)将C语言和汇编一一对应,你甚至可以在例程中加入自己的一些加减乘除/循环/函数调用,看看编译器是怎么把它转化成汇编的。玩了几个例程之后,你就大概了解汇编是怎么一会事情了。
后面要看你用用汇编来干什么?
系统初始化?这你需要对板子和SOC有一定了解,比如初始化的时候要初始化哪些元件,CPU应该置于什么状态,一般开发板例程的start.s文件都有
系统优化?这你可以先用Keil将代码Profile一遍,找到系统的瓶颈,然后对他进行优化(时间/空间?),数据的组织,算法优化,完了后看看编译器生成的汇编代码是否足够高效,如果不够,再用汇编对相应的地方进行改写,这个时候还可以用一些特殊的加速单元比如DSP指令,甚至Neon汇编(这个在Cortex A上才有)。