【嵌入式开发——ARM】2ARM汇编指令

intel和ARM公司都有自己的指令集,也就是说对应的汇编格式是不同的,不过好在目前基本很少在汇编语言层面编程了,最次也是在C语言级编程,要不说C语言是高级语言呢,很多人觉得难,无非是指针觉得头疼,但其实指针是个极其好用而且不难的工具,其本质就是地址,这也帮助C语言天然契合嵌入式,对指针有困惑的同学,可以翻看我之前的博客,专门有一篇介绍指针。

虽然我们编程用的是C语言,实际在编译代码时,最终还是要先转为汇编再最终得到相应的二进制执行码,不过我们不用感知,这是编译器做的工作,但懂些汇编语言还是很有必要的,无论是帮助深刻理解嵌入式芯片,还是未来有机会来波汇编和C的混合编程,都是很有帮助的;下面介绍ARM架构使用的汇编指令。

1 ARM汇编指令集

指令与伪指令(汇编)
指令:就是CPU机器指令助记符,经过变异后会得到一串10组组成的机器码,可以由CPU读取执行;汇编指令=操作码+操作数;
伪指令:本质上不是指令(只不过和指令一起写在代码中),它是编译环境提供的,目的是用来指导编译过程,经过编译后伪指令最终不会生成机器码;
伪指令作用一般是:
仅在编译过程中起控制作用,不产生可执行目标代码;与机器指令代码无一一对应关系,只能被编译器识别,编译完成后,目标程序中不再出现伪指令。

宏指令
同样还是由编译器厂商提供
基本格式:label 指令;
label 是一个标签,要顶格写;指令 可以是汇编指令或伪指令;;是行注释
如 label EQU 数值
ARM官方指令风格一般大写,如LDR R0, [R1];GNU风格,指令一般用小写字母,Linux中常用,如:Idr r0, [r1]。

LDR/STR架构
ARM采用RISC架构,CPU本身不能直接读取内存,需要先将内存中内容加载到CPU通用寄存器中才能被CPU处理;
LDR指令将内存内容加载到通用寄存器;
STR指令将寄存器内容存到内存空间中;
LDR/STR组合用来实现ARM CPU和内存交换数据。

2 寻址方式

ARM指令格式

你可能感兴趣的:(arm开发,汇编,c语言,嵌入式硬件)