Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Update document

  • Loading branch information...
commit 57e007a2716e63ebca9ede217a74423a15a6e318 1 parent b09f2e6
@gfx authored
Showing with 5 additions and 6 deletions.
  1. +5 −6 lib/Acme/Perl/VM/JA.pod
View
11 lib/Acme/Perl/VM/JA.pod
@@ -96,7 +96,7 @@ See also F<pp.h>.
可変長引数を扱うためのスタックのマーカーです。
-二項演算子などは引数の数が固定ですが,C<print>のように引数の数が可変長である組み込み関数もあります。可変長引数を扱うためには,引数スタック中で引数が始まる位置を保存する必要があります。また,このマーカーは入れ子になる可能性があるので,このマーカーそれ自体もスタックとして表現されます
+二項演算子などは引数の数が固定ですが,C<print>のように引数の数が可変長である組み込み関数もあります。可変長引数を扱うためには,引数スタック中で引数が始まる位置を保存する必要があります。また,このマーカーは入れ子になる可能性があるので,このマーカーそれ自体もスタックに保存します
可変長引数の開始を宣言するためには,C<PUSHMARK(SP)>マクロを使います。
また,C<dMARK>マクロによりスタックから値をポップし,C<MARK>マクロを使えるようにします。
@@ -121,8 +121,7 @@ See also F<pp.h>.
Perlプログラムの最小単位である,手続きとデータを持ったオブジェクトです。
opcodeクラス群はCの構造体の先頭メンバをいくつか共有する構造体群として表現されます。
-opcodeオブジェクトの持つ手続きは対応するppcodeであり,C<op_ppaddr>メンバで参照します。
-データはPerlの値やCの値,または他のopcodeへのリンクです。
+opcodeオブジェクトの持つ手続きは対応するppcodeであり,C<op_ppaddr>メンバで参照します。データはPerlの値やCの値,または他のopcodeへのリンクです。
各opcodeオブジェクトは名前と外部出力用の説明を持ち,それぞれC<OP_NAME(op)>,C<OP_DESC(op)>マクロで得ることができます。
@@ -207,11 +206,11 @@ See also F<pp.c>, F<pp_hot.c>, F<pp_ctl.c>, F<pp_sys.c>, F<pp_sort.c> and F<pp_p
return 0;
}
-C<PL_op>は現在実行中のopcodeオブジェクトが入っているスレッドグローバルな変数です。C<op_ppaddr>はopcodeに対応したppcodeが入っており,ppcodeは次に実行するopcodeを返すことになっています。
+C<PL_op>は現在実行中のopcodeオブジェクトが入っているグローバル変数(またはTLS変数)です。C<op_ppaddr>はopcodeに対応したppcodeが入っており,ppcodeは次に実行するopcodeを返すことになっています。
C<PERL_ASYNC_CHECK()>は単にセーフシグナルの処理なので実行には関係ありません。したがって,インタプリタループの実体は一行しかありません。
-ところで,このようなopcodeの多態性を利用した実行ループと対極にあるのが,switch文やifの連鎖による分岐を利用した実行ループです。perlの実装の中にはそのような実行ループも存在します。たとえば,F<scope.c>にあるC<leave_scope()>はまさに巨大なswitch文を利用した実行ループでスコープの後処理を行っています。
+ところで,このようなopcodeの多態性を利用した実行ループと対極にあるのが,switch文やifの連鎖による分岐を利用した実行ループです。Perl4の実行ループはそのような実装でしたし,Perl5の実装の中にもswitchによる実行ループも存在します。たとえば,F<scope.c>にあるC<leave_scope()>はまさに巨大なswitch文を利用した実行ループでスコープの後処理を行っています。
インタプリタループについては,APVMのC<runops_standard()>でも実装はほぼ同じです。
@@ -219,7 +218,7 @@ See also F<run.c>.
=head2 Other components
-この他にもいくつか重要なコンポーネントがありますが,それらについては後日解説します
+この他にもいくつか重要なコンポーネントがあります
=over 4

0 comments on commit 57e007a

Please sign in to comment.
Something went wrong with that request. Please try again.