LoginSignup
17
10

More than 5 years have passed since last update.

アセンブラ入門メモ(ARM)

Last updated at Posted at 2018-08-08

この記事について

この記事は僕がアセンブリ言語に興味を持ち、理解したことをメモ程度に書く記事です。
勿論誤ったことを記述することが多くあると思うので、それを楽しむ程度に見てくれると幸いです。

なんでARMなのって思うかもしれませんが、手元に気軽に検証でそうなのがラズパイくらいだったからです

基本は以下のリンクを参考にさせてもらっています。
[アセンブラ] ARMの仕様を見てみる

レジスタ

32bit の r0 から r15までの16個

  • r0r13までは汎用レジスタ

  • r13 -- スタックポインタ

  • r14 -- リンクレジスタ

  • r15 -- プログラムカウンタ

別名など

レジスタ 別名 レジスタ 別名
r7 wr r12 ip
r9 sb r13 sp
r10 sl r14 lr
r11 fp r15 pc

諸々

@でコメントアウト
[r1]とかの括弧くくりはメインメモリ上のアドレスのこと
#は即値(ただの値)

命令

基本的に以下の構文

命令 デスティネーション 第1オペランド 第2オペランド

mov

レジスタ間で値を代入する。
レジスタに直接値を代入する場合はmovtを併用して上位16bitと下位16ビットで分けて代入するらしい。

mov r1, r2   @ r1 <- r2

add / sub

デスティネーションに第1と第2オペランドを足したもの/引いたものが代入される。

add r1, r2, r3  @ r1 = r2 + r3
sub r1, r2, r3  @ r1 = r2 - r3

ldr / str

ldrはオペランドに指定されたアドレスの値を、デスティネーションレジスタに代入する。
strはデスティネーションレジスタの値を、オペランドに指定されたアドレスに書き込む。

ldr r4, [r10]  @ r4 <- [r10]
str r4, [r10]  @ r4 -> [r10]

push / pop

近いうちに書きます
...



とりあえずこんだけでも、少しはニーモニックが読めた!
また色々理解できたら記述していこうと思います

17
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
10