teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

誤記訂正

2017/12/04 23:54

投稿

KSwordOfHaste
KSwordOfHaste

スコア18404

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

文章の間違い訂正

2017/12/04 23:54

投稿

KSwordOfHaste
KSwordOfHaste

スコア18404

answer CHANGED
@@ -24,7 +24,7 @@
24
24
  各命令語が何バイトになり、それぞれ何番地から始まるか人間には退屈な計算でしかありませんが、計算機であれば文句をいわずにもくもくと計算してくれます。計算がめんどくさいから計算機を使うわけなので、こうした退屈な計算は計算機にやらせるのが妥当だと思います。
25
25
 
26
26
 
27
- 本件はラベルに限ったことではありません。プログラム言語で用いる変数名や関数名は究極的にはメモリー上のどこかの場所を示すものです(相対番地か絶対番地かの違いはありますが)。それも上記と同様、プログラムコードの中でどんなサイズのものをいくつ使うかによってメモリー上の配置が決まりますがそれを一々人間が気にしなくてはならないのだとしたらプログラミングは今よりずっと苦行になるはずです。そういうことを避けるために「人間が読みやすい他と区別が付けられるようなラベル=識別子」を付与して実際にそれがどのように配置されるかは言語システムの方でよきに計らうようになっています。
27
+ 本件はアセンブリ言語に限ったことではありません。プログラム言語で用いる変数名や関数名は究極的にはメモリー上のどこかの場所を示すものです(相対番地か絶対番地かの違いはありますが)。それも上記と同様、プログラムコードの中でどんなサイズのものをいくつ使うかによってメモリー上の配置が決まりますがそれを一々人間が気にしなくてはならないのだとしたらプログラミングは今よりずっと苦行になるはずです。そういうことを避けるために「人間が読みやすい他と区別が付けられるようなラベル=識別子」を付与して実際にそれがどのように配置されるかは言語システムの方でよきに計らうようになっています。
28
28
 
29
29
 
30
30
  ---

1

誤記訂正

2017/12/04 16:19

投稿

KSwordOfHaste
KSwordOfHaste

スコア18404

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 $118 ; <===
18
+ jns L1 ; <===番地を表すラベルを指定
19
19
  addl $1,rax
20
20
  L1:
21
21
  ...