ARM-GPIO

ARM-GPIO

算数移位

逻辑移位

循环移位

桶型移位器

立即数
1.如果一个数的有效位大于8位,一定不是立即数
2.如果一个数的有效位少于8位,一定是一个立即数
3.如果一个数的有效位等于8位,
- 有效位的最后一位在奇数位上,就不是立即数
- 有效位的最后一位在偶数位上,就是立即数

有效数(如果一个数取反后,是立即数)

ldr r0,a
ldr r0,=a

jtag
bic
orr

SWI软中断
产生一个异常陷阱,跳转到SWI硬件向量

PSR传送指令
访问CPSR/SPSR
MRS
MSR

ARM处理器八种
1.立即数寻址:有一个数是从立即数获取
MOV r0,#12
ADD r0,r1,#4
2.寄存器寻址:所有数值都是从寄存器获取
MOV r0,r1
ADD r0,r1,r2
3.寄存器移位寻址:
4.寄存器间接寻址:通过一个地址,间接访问内存里的值

ldmxx
stmxx

堆栈寻址
stmfd
ldmfd

伪指令
数据定义(不区别有有无符号)
.byte

.string
str:
.string “hello”
.asciz
.ascii
asc:
.ascii “hello/0”

.if
.else
.endif

宏函数
.macro sum from=0,to=5
.long \from

ADR伪指令
ADR:跳转
adr pc,stop

ADRL:跳转
adrl pc,stop –> add r0,pc,#0xff add pc,r0,#0xff00

ldr pc,=stop
ldr pc,=0x40008000

.arm
.thumd
.data
.bss
.word(分配4个字节)
.section(定义一个端)
.align(字节对齐)
.align 3(2^3对齐)

.include(包含头文件)

.equ

n:

B(向后搜索)
F(向前搜索)

c汇编混合调用
C语言值arm下,传参如果小于4个每个都不大于32bit,以r0-r3传递返回值:如果返回值不大于32bit以r0,传递
64bit以
b 跳标号

bx

asm volatile(
“mov r0,#2\n\r”
“mov r1,#4\n\r”
“ldr r3,[lr]\n\r”
“mov r0,%2\n\r”
“ldr r1,%3\n\r”
“add %0,r0,r1\n\r”
:”=r”(a),”+r”(b)/输出列表/
:”r”(n),”m”(d)/输入列表/
:”r1”,”r3”,”r0”/易改变(被改变列表)/
);
r–指定数据从寄存器传递
m–寄存器通过内存传递
=–只写
+–可读写

你可能感兴趣的:(ARM)