アセンブラ(ARM)

レジスタ

VBAR_EL1, Vector Base Address Register (p.2745)

EL1で発生する任意の例外のための,ベクタテーブルのベースアドレスを格納



sctlr_el1

命令

add

足し算

add  x0, x1, x2           @ x0=x1+x2

sub

Subtractの略.引き算

sub  x0, x1, x2           @ x0=x1-x2
sub  x0, x1, #3           @ x0=x1-3

subs

引き算とNZCVレジスタの更新

subs  x0, x1, #3           @ x0=x1-3, x0が0ならNZCVレジスタのフラグが立つ

and

論理和

and  x0, x1, x2           @ x0=x1&x2

mov

Moveの略.値のコピー

mov  x0, #1               @ x0=1

ldr

Load registerの略

ldr  x0, [x1]             @ x1番地の値を,x0レジスタにロード
ldr  x0, =0x1000          @ 0x1000を,x0レジスタにロード
ldr  x0, [x1], #8         @ x1番地の値を,x0レジスタにロードした後,x1=x1+8に更新される

str

Store registerの略

str  x0, [x1]             @ x0レジスタの値を,x1番地にストア
str  x0, [x1, #8]             @ x0レジスタの値を,x1+8番地にストア
str  x0, [x1], #8         @ x0レジスタの値を,x1番地にストアした後,x1=x1+8に更新される

adr

ラベルの相対アドレスを,ターゲットレジスタにロード

adr  x0, label            @ labelの示すアドレスを,x0レジスタにロード

mrs

の略.システムレジスタのデータを,汎用レジスタにロードする.

mrs  x0, mpidr_el1        @ mpidr_el1レジスタのデータを,x0レジスタにロード 

msr

の略.汎用レジスタのデータを,システムレジスタにロードする.

msr  sctlr_el1, x0        @ x0レジスタのデータを,sctlr_el1レジスタにロード 

bl

Branch and linkの略

b.gt

Branch if greater thanの略

subs  x1, x1, #8
b.gt  label               @ x1が0より大きければ,ラベルlabelへジャンプ

lsr

Logical shift rightの略

lsr  x0, x0, #2               @ x0を右に2ビット分シフト

stp

Store pair of registersの略

stp  x0, x1, [sp, #48]               @ x0, x1をsp+48番地に格納(spの値は変わらない)

ldp

Load pair of registersの略

ldp  x0, x1, [sp, #48]               @ sp+48番地からの128ビットをx0, x1に格納