基础汇编指令
Posted 梦提三尺剑
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基础汇编指令相关的知识,希望对你有一定的参考价值。
start:
mov sp, #4096
bl c main
halt
b 8
mov ip, sp
stmdb sp!, {fp,ip,lr,pc}
sub fp, ip ,#4; 0x4
sub sp, sp, #8 0x8
mov r3,#1442840576 0x56000000
add r3, r3, #80; 0x50
str r3, [fp,#-16
mov r3, #1442840576 0x56000000
add r3, r3, #84 ; 0x54
str r3, [fp, #-20]
ldr r2, [fp, #-16]
mov r3, #256
str r3, [r2]
ldr r2, [fp,#-20]
mov r3, #0
str r3, [r2]
mov r3, #0
mov r0, r3
sub sp, fp, #12
ldmia sp,{fp,sp,pc}
解析:
stmdb sp!,{fp,ip,lr,pc}
db含义:decrement before 先减,后存。
sp‘ = sp -4 = 4092,如果布加感叹号,sp为原值,并不会被减。
高编号寄存器存在高地址,4092到4095存放PC的值,sp‘ = sp - 4 = 4088.
4088到4091存放lr寄存器的值
4084到4087存放ip的值
4080到4083存放fp的值。
stmdb最常用
ldmia sp, {fp,sp,pc}
先读4080到4083的值 = 原来的fp的值 低地址对应低编号。
以上是关于基础汇编指令的主要内容,如果未能解决你的问题,请参考以下文章