アセンブリ言語講座(ASM)① [3DS改造解析]

ARMアセンブリ言語(32bit) - 3DS改造解析編①
※こちらはARMアセンブリ言語についてだがアセンブリ言語には様々な種類がありレジスタも異なる。

レジスタと主記憶装置は密接に関わっている!

CPUには制御装置、演算装置、主記憶装置、入力装置、補助記憶装置、出力装置(図1)がある!

(図1)
        制御装置
        演算装置
         ↑↓
   入力装置→主記憶装置→出力装置
         ↑↓
       補助記憶装置

 

アセンブラの場合は制御装置、演算装置、主記憶装置が非常に関わってくる!

 


レジスタとは?
CPUには、レジスタがある(記憶領域).
ARMのレジスタには r0~r12まで汎用レジスタ
r13(sp), r14(lr), r15(pc)がある。

[ 汎用レジスタのポイント ]
演算装置で演算する場合は汎用レジスタに必ず格納してから行うこと!

 

 

主記憶(メモリ)装置とは?
主記憶には 65,536(FFFF)個の格納場所がある。
主記憶には一つ一つの番地(アドレス)がある。
[ 主記憶装置の中身 ]
          --------------
番地0 |                  |
          --------------
          --------------
番地1 |                  |
          --------------

          --------------
番地2 |                  |
          --------------

          --------------
番地3 |                  |
          -------------- ....

-----------------------------------------------
[ 命令の構成 ]
オペコード(命令)とオペランド(第一, 第二, 第三)

LDR    r1,     [ r0,   #2 ]
↑A      ↑B       ↑C    ↑D

A オペコード(命令(どのような処理をさせるのか?))
B 第一オペランド 汎用レジスタ(格納レジスタ)
C 第二オペランド 汎用レジスタ
D 第三オペランド 即値(定数) LDRの場合なので C, D は [メモリの内 ]

 

理解してみよう!(MOV編)
MOV   r1,      r0

r0 には 0000F61E50{ 16129616 }
r1 には 0000000E36{ 3638 }
がある!
MOV = コピーを行う処理
r0 = 汎用レジスタ
r1 = 汎用レジスタ

r0 を r1 へ コピー(MOV) すると r1 の 中身はどうなる?
[答え!]
r0 には 0000F61E50{ 16129616 }
r1 には 0000F61E50{ 16129616 }