1. 程式人生 > >基礎匯編指令

基礎匯編指令

存在 常用 匯編指令 sub start alt 並不會 str 編號

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的值  低地址對應低編號。

  

  

  

    

基礎匯編指令