page0015
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* ローカルラベル
-(by [[K]], 2018.06.14)
** (1)
-C言語の変数の仕組みは面白い。{ }でブロックを作ると、ブロ...
-これによりちょっとしたコード片やマクロなどがかなり書きや...
** (2)
-実はアセンブラの世界でも、この便利さを目指したものがある...
-@bは現在の位置から戻って一番近い@@:にマッチする。@fは現...
-これに対してNASMのローカルラベルはさらに一歩進んでいる。...
~
-ここでC言語に戻るが、C言語では変数は{ }でネストできるの...
--多重ループから抜け出したいとき、gotoを使えば素直に書け...
** (3)
-jck0は、[[page0013]]で紹介しているアセンブラみたいなもの...
-これはいうなればブロックを書かなくてもできる自由な変数宣...
-さらにgotoラベルについても同様の仕組みを導入した。だから...
~
-ラベルは変数と違い、前方参照がありうる。
// コード片1
if (...) goto label;
...
label:
...
// コード片2
if (...) goto label;
...
label:
...
-こういう場合、コード片2のif-gotoはいったいどちらのlabel...
// コード片1
reserve(label);
if (...) goto label;
...
label:
...
// コード片2
reserve(label);
if (...) goto label;
...
label:
...
-リザーブ命令は、ここで新しいラベル名を宣言するけど、実際...
-jck0ではパーサーをシンプルにするためにもっと汚らしい書き...
** (4)
-ローカルラベルが使えると上位の言語処理系はこんなに楽にな...
-たとえば do { をjck0に翻訳するとしたらこれだけでよい。
$reserve continue break ;
$label continue0 ;
-そして } while (...); をjck0に翻訳するとしたらこれだけで...
$label continue ;
$if ... $goto continue0 ;
$label break ;
$del continue0 continue break ;
-この置換は、do~whileがネストしていても全く問題なく使え...
-つまり上位の言語処理系は、面倒なラベル管理をしなくてよく...
* こめんと欄
#comment
終了行:
* ローカルラベル
-(by [[K]], 2018.06.14)
** (1)
-C言語の変数の仕組みは面白い。{ }でブロックを作ると、ブロ...
-これによりちょっとしたコード片やマクロなどがかなり書きや...
** (2)
-実はアセンブラの世界でも、この便利さを目指したものがある...
-@bは現在の位置から戻って一番近い@@:にマッチする。@fは現...
-これに対してNASMのローカルラベルはさらに一歩進んでいる。...
~
-ここでC言語に戻るが、C言語では変数は{ }でネストできるの...
--多重ループから抜け出したいとき、gotoを使えば素直に書け...
** (3)
-jck0は、[[page0013]]で紹介しているアセンブラみたいなもの...
-これはいうなればブロックを書かなくてもできる自由な変数宣...
-さらにgotoラベルについても同様の仕組みを導入した。だから...
~
-ラベルは変数と違い、前方参照がありうる。
// コード片1
if (...) goto label;
...
label:
...
// コード片2
if (...) goto label;
...
label:
...
-こういう場合、コード片2のif-gotoはいったいどちらのlabel...
// コード片1
reserve(label);
if (...) goto label;
...
label:
...
// コード片2
reserve(label);
if (...) goto label;
...
label:
...
-リザーブ命令は、ここで新しいラベル名を宣言するけど、実際...
-jck0ではパーサーをシンプルにするためにもっと汚らしい書き...
** (4)
-ローカルラベルが使えると上位の言語処理系はこんなに楽にな...
-たとえば do { をjck0に翻訳するとしたらこれだけでよい。
$reserve continue break ;
$label continue0 ;
-そして } while (...); をjck0に翻訳するとしたらこれだけで...
$label continue ;
$if ... $goto continue0 ;
$label break ;
$del continue0 continue break ;
-この置換は、do~whileがネストしていても全く問題なく使え...
-つまり上位の言語処理系は、面倒なラベル管理をしなくてよく...
* こめんと欄
#comment
ページ名: