直接スレッディング
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/02/16 19:11 UTC 版)
「スレッデッドコード」の記事における「直接スレッディング」の解説
スレッド内のアドレス群は機械語コードのアドレスである。単純だが、そのマシンのアドレスのみがスレッドに羅列されるため、何らかのパラメータが必要でもそれらはメモリから間接的にロードするしかない。したがって若干オーバーヘッドがある。一部のForth処理系は直接スレッデッドコードを生成する。多くのマシンにおいて、直接スレッディングは後述するサブルーチン・スレッディングよりも高速である。 例として、スタックマシンで "push A, push B, add" を実行する場合を見てみよう。直接スレッディングでは次のようなスレッドとルーチンに変換される。ここで ip は &thread というアドレスに初期化されるものとする。 thread: pushA: *sp++ = A pushB: *sp++ = B add: *sp++ = *--sp + *--sp &pushA jump *ip++ jump *ip++ jump *ip++ &pushB &add ... また、オペランドをスレッドに含める方式もある。スレッドは大きくなるが、ルーチンは少なくなる。 thread: push: *sp++ = *ip++ add: *sp++ = *--sp + *--sp &push jump *ip++ jump *ip++ &A &push &B &add
※この「直接スレッディング」の解説は、「スレッデッドコード」の解説の一部です。
「直接スレッディング」を含む「スレッデッドコード」の記事については、「スレッデッドコード」の概要を参照ください。
- 直接スレッディングのページへのリンク