| 注意 | 下面的代码是由Realview2.2编译出的代码,使用其他编译器结果可能有差异。同一段内嵌汇编经过不同版本的编译器编译后,在指令里可能使用不一样的实际寄存器,但是只要遵循文档里的编码指导,执行的功能肯定相同。 |
| 注意 | 扩展指令对程序状态寄存器CPSR的影响:算术指令影响相应的NZCV标准位;其他指令设置NZ标志位不影响V标志位。 |
http://www.eefocus.com/embedded/323195/file:///C:DOCUME~1ADMINI~1LOCALS~1Tempksohtmlwps_clip_image-27477.png | 注意 | 数据类型中除char和short(默认为无符号类型)外,其他均为有符号类型。 |
| 注意 | 内联汇编程序不支持BX、BLX和BXJ指令。不能在任何输入、输出或“被破坏的寄存器列表(corrupted register list)”中指定lr、sp或pc寄存器;任何SWI指令或函数调用不能更改sp寄存器。 |
http://www.eefocus.com/embedded/323195/file:///C:DOCUME~1ADMINI~1LOCALS~1Tempksohtmlwps_clip_image-8927.png | 注意 | 指令BL和B的区别在于,跳转指令B只能使程序跳转到C或C++程序的一个地址标号,不能用于子程序调用。 |
| 注意 | 嵌入式汇编的初始状态由编译器的编译选项确定,与程序中的#pragma arm 和 #pragma thumb伪操作无关。 |
http://www.eefocus.com/embedded/323195/file:///C:DOCUME~1ADMINI~1LOCALS~1Tempksohtmlwps_clip_image-27362.png | 注意 | 在_cpp标识符作用范围之内使用C或C++语法规则。 |
功 能 | 嵌入式汇编程序 | 内联汇编程序 |
指令集 | ARM和Thumb | 仅支持ARM |
ARM汇编指令伪操作 | 支持 | 不支持 |
ARMv6指令集 | 支持 | 仅支持媒体指令 |
C/C++表达式 | 只支持常数表达式 | 完全支持 |
汇编代码是否优化 | 无优化 | 完全优化 |
能否被内联(Inling) | 不可能 | 有可能被内联 |
功 能 | 嵌入式汇编程序 | 内联汇编程序 |
寄存器访问 | 使用指定的物理寄存器,还可以使用PC、LR和SP | 使用虚拟寄存器。不能使用PC、LR和SP寄存器 |
是否自动产生返回指令 | 手工添加返回指令 | 指定产生(但不支持BX、BXJ和BLX指令) |
是否支持BKPT指令 | 不直接支持 | 不支持 |
欢迎光临 DIY编程器网 (http://diybcq.com/) | Powered by Discuz! X3.2 |