回答編集履歴

2

16進数…

2020/03/20 06:44

投稿

raccy
raccy

スコア21735

test CHANGED
@@ -112,7 +112,7 @@
112
112
 
113
113
 
114
114
 
115
- 関数内でのスタックポインタを0とすると次のようなイメージになります。
115
+ 関数内でのスタックポインタを00(16進数)とすると次のようなイメージになります。
116
116
 
117
117
 
118
118
 
@@ -128,7 +128,7 @@
128
128
 
129
129
 
130
130
 
131
- Rは関数が呼び出される前のスタックポインタで、Sは関数内で処理されている最中のスタックポインタです。スタックは後ろから使われるため、`a`用に0C-0F、`b`用に`08-0B`が確保されます。今回の関数では00-07は使用されません。ローカル変数がもっと多ければスタックが埋まっていきますが、ARM64では16バイト毎に確保するようになっているようで、`int`が5つ以上になると32になったりします。どの区切りで確保されるかや、スタックポインタの扱い方はCPUのアーキテクチャによって異なります。あくまで、これはARM64の話であることに注意して下さい。
131
+ Rは関数が呼び出される前のスタックポインタで、Sは関数内で処理されている最中のスタックポインタです。スタックは後ろから使われるため、`a`用に0C-0F、`b`用に08-0Bが確保されます。今回の関数では00-07は使用されません。ローカル変数がもっと多ければスタックが埋まっていきますが、ARM64では16バイト毎に確保するようになっているようで、`int`が5つ以上になると32になったりします。どの区切りで確保されるかや、スタックポインタの扱い方はCPUのアーキテクチャによって異なります。あくまで、これはARM64の話であることに注意して下さい。
132
132
 
133
133
 
134
134
 

1

ARM64を選んだのはRISCだから

2020/03/20 06:44

投稿

raccy
raccy

スコア21735

test CHANGED
@@ -24,7 +24,7 @@
24
24
 
25
25
 
26
26
 
27
- 今回は、コンパイル環境の構築が容易であり、また、後述の確認サイトで使えるARM64(64bit版のARM)をターゲットにしたいと思います。ARM64のアセンブリを調べるには[ARM® コンパイラ armasm ユーザガイド バージョン 6.02](http://infocenter.arm.com/help/topic/com.arm.doc.dui0801cj/index.html)を参考にしました(でも、微妙に違うような…コンパイラがGCCだから?)。日本語版があってよかったです。
27
+ 今回は、コンパイル環境の構築が容易であり、また、後述の確認サイトで使えて、一般的にRISCに分類されCPUの一つであるARM64(64bit版のARM)をターゲットにしたいと思います。ARM64のアセンブリを調べるには[ARM® コンパイラ armasm ユーザガイド バージョン 6.02](http://infocenter.arm.com/help/topic/com.arm.doc.dui0801cj/index.html)を参考にしました(でも、微妙に違うような…コンパイラがGCCだから?)。日本語版があってよかったです。
28
28
 
29
29
 
30
30