回答編集履歴
3
誤記訂正
answer
CHANGED
@@ -9,7 +9,7 @@
|
|
9
9
|
118 ...
|
10
10
|
```
|
11
11
|
|
12
|
-
こんなふうに各命令
|
12
|
+
こんなふうに各命令語の長さを計算して「さて何番地だっけ」と考えるのはいかに面倒なアセンブリ言語を使おうとするプログラマーでもさすがに悲鳴を上げると思います。そんなことをしなくて済むようにラベルを使います。
|
13
13
|
|
14
14
|
```
|
15
15
|
movl $1,rax
|
2
文章の間違い訂正
answer
CHANGED
@@ -24,7 +24,7 @@
|
|
24
24
|
各命令語が何バイトになり、それぞれ何番地から始まるか人間には退屈な計算でしかありませんが、計算機であれば文句をいわずにもくもくと計算してくれます。計算がめんどくさいから計算機を使うわけなので、こうした退屈な計算は計算機にやらせるのが妥当だと思います。
|
25
25
|
|
26
26
|
|
27
|
-
本件は
|
27
|
+
本件はアセンブリ言語に限ったことではありません。プログラム言語で用いる変数名や関数名は究極的にはメモリー上のどこかの場所を示すものです(相対番地か絶対番地かの違いはありますが)。それも上記と同様、プログラムコードの中でどんなサイズのものをいくつ使うかによってメモリー上の配置が決まりますがそれを一々人間が気にしなくてはならないのだとしたらプログラミングは今よりずっと苦行になるはずです。そういうことを避けるために「人間が読みやすい他と区別が付けられるようなラベル=識別子」を付与して実際にそれがどのように配置されるかは言語システムの方でよきに計らうようになっています。
|
28
28
|
|
29
29
|
|
30
30
|
---
|
1
誤記訂正
answer
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
100 movl $1,rax
|
5
5
|
104 movl $2,rbx
|
6
6
|
108 cmpl rax,rbx
|
7
|
-
112 jns $118 ; <===
|
7
|
+
112 jns $118 ; <===番地を直接指定・・・
|
8
8
|
116 addl $1,rax
|
9
9
|
118 ...
|
10
10
|
```
|
@@ -15,7 +15,7 @@
|
|
15
15
|
movl $1,rax
|
16
16
|
movl $2,rbx
|
17
17
|
cmpl rax,rbx
|
18
|
-
jns
|
18
|
+
jns L1 ; <===番地を表すラベルを指定
|
19
19
|
addl $1,rax
|
20
20
|
L1:
|
21
21
|
...
|