摘要:
一、编译器arm-linux-gcc 1、用arm-linux-gcc编译一个程序,一般它是要经过如下步骤的: 1.1、预处理阶段 编译器把上述代码中stdio.h编译进来,使用GCC的选项-E可以使GCC在预处理结束后停止编译过程,而不继续其他动作了。 1.2、编译阶段 首先检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,arm-linux-gcc把代码翻译成汇编语言。用户可以使用-S选项来进行查看,该选项只编译而不进行汇编,生成汇编代码。 1.3、汇编阶段 把编译阶段生成.s文件转成目标文件,使用者可使用选项... 阅读全文
摘要:
ARN汇编器支持ARM伪指令,这些伪指令在汇编阶段被翻译成ARM或Thumb指令。ARM伪指令包含ADR、ADRL、MOV32和LDR。一、ADR伪指令 1、作用 ADR是小范围地址读取伪指令,基于PC相对偏移地址或基于寄存器相对偏移地址读取到寄存器中,当地址值是字节对齐时,取值范围为-255到255,当地址值是字对齐时,取值范围-1020到1020 2、语法格式 ADR{}{.W} register,label 3、参数说明 3.1、.W:可选项,指定指令宽度 3.2、register:目标寄存器 3.3、label:基于PC或具有寄存器的表达式二、A... 阅读全文
摘要:
交换指令将一个存储单元内容与制定的寄存器内容相交换,交换指令为进程间同步提供了一种方便的解决途径。该指令产生一堆原子Load/Store操作,该操作发生在一个连续的总线操作中,在操作期间阻止其他任何指令对该存储单元的读/写。一、通用寄存器和存储器字数据交换指令SWP 1、作用 将一个内存单元(该单元地址放在寄存器Rn中)的内容读取到一个寄存器Rd中,同时将另一个寄存器Rm的内容写入到该内存单元中。 2、语法格式 SWP{} ,,[] 3、参数说明 3.1、:确定指令的目标寄存器 3.2、:该寄存器包含将要被存储到内存单元中的数据 3.3、:内存单元地址寄... 阅读全文