单片机核心学习:(三)ARM架构(中)

目录

一、ARM汇编

1、ARM汇编概述

2、统一的汇编语言:UAL

3、汇编指令格式

4、立即数

5、ARM编译器与GCC编译器语法差异

二、ARM汇编模拟器

1、VisUAL的基本使用


一、ARM汇编

1、ARM汇编概述

(1)汇编指令集的分类:(常用的,记住这些就够了)

通过上一篇文章的示例,可以知道① ② 

(2)指令集的分类

① 怎么修改CPU使用的指令集?

       一个芯片既可以用ARM指令集,也可以用Thumb指令集,根据CPU内部程序状态寄存器里的某一位,来表示运行的指令是ARM还是Thumb指令集,如下图:

ARM公司发布两类指令集:

要节省空间时用Thumb指令,要效率时用ARM指令。

1)  ARM指令集,这是32位的,每条指令占据32位,高效,但是太占空间

2)  Thumb指令集,这是16位的,每条指令占据16位,节省空间

② Thumb-2指令

当我们同时使用ARM指令集和Thumb指令集时,该怎么办呢?

1)对于以前的ARM7、ARM9和现在的Cortex A7芯片,都是支持这两种指令集。

2)对于现在的Corte-M系列,比如M3和M4,引入了另一种指令集Thumb-2,同时支持16位、32位指令集,可以混合在一起编程。CPU自动识别。

2、统一的汇编语言:UAL

ARM公司推出了: Unified Assembly Language,UAL,统一汇编语言,你不需要去区分这些指令集。

在程序前面用CODE32/CODE16/THUMB表示指令集:ARM/Thumb/Thumb2

日常工作中,只需要这么几条汇编指令,从名字就可以猜出含义:

MOV   LDR/STR   LDM/STM   AND/OR  ADD/SUB   B/BL  DCD  ADR/LDR  CMP

如果想要深入学习,可以学

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
SimIt-ARM-3.0 给予命令行ARM指令模拟器,短小精悍,是研究ARM处理器的好工具,该模拟器既可以运行用户级别的ELF程序,又可以模拟运行Linux操作系统;提供了简单易用的调试命令,可以逐条跟踪指令的执行。 SimIt-ARM-3.0-gk-20150902.tar.bz2 HowTo 0.what is SimIt-ARM-3.0 SimIt-ARM 3.0 is an instruction-set simulator that runs both system-level and user-level ARM programs, for more about it please read user's guide file. 1.how to build tar jxvf SimIt-ARM-3.0-gk-20150902.tar.bz2 cd SimIt-ARM-3.0-gk ./configure make make install After these steps, the ./build/bindirectory contains the following programs: ema An ARM interpreter. To test the installation was successful type ./build/bin/ema test/wc configure modifiy PATH environment variable: PATH=$PATH:$HOME/SimIt-ARM-3.0-gk/build/bin ; export PATH 2. how to use 2.1 run user-level ARM programs [root@ORA9 SimIt-ARM-3.0-gk]# cd gcc-asm [root@ORA9 gcc-asm]# more hello.c /* * hello.c * Tue Sep 8 10:13:40 CST 2015 */ int main() { printf("hello world\n"); __asm("mov r0,#2\n\t" "swi 0x1\n\t"); // syscall: exit(2); } [root@ORA9 gcc-asm]# arm-linux-gcc -v Reading specs from /usr/local/arm/3.4.1/bin/../lib/gcc/arm-linux/3.4.1/specs Configured with: /opt/crosstool/crosstool-0.28/build/arm-linux/gcc-3.4.1-glibc-2.3.2/gcc-3.4.1/configure --target=arm-linux --host=i686-host_pc-linux-gnu --prefix=/opt/crosstool/arm-linux/gcc-3.4.1-glibc-2.3.2 --with-float=soft --with-headers=/opt/crosstool/arm-linux/gcc-3.4.1-glibc-2.3.2/arm-linux/include --with-local-prefix=/opt/crosstool/arm-linux/gcc-3.4.1-glibc-2.3.2/arm-linux --disable-nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit --enable-languages=c,c++ --enable-shared --enable-c99 --enable-long-long Thread model: posix gcc version 3.4.1 [root@ORA9 gcc-asm]# arm-linux-gcc hello.c -o hello -static [root@ORA9 gcc-asm]# ls -l hello* -rwxr-xr-x 1 root root 520775 Sep 8 10:18 hello -rw-r--r-- 1 root root 160 Sep 8 10:15 hello.c [root@ORA9 gcc-asm]# file hello hello: ELF 32-bit LSB executable, ARM, vers
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值