# HG changeset patch # User anatofuz # Date 1550494307 -32400 # Node ID 0118da5b64f43c9a98a4d72ee01b21d695ae2d0d # Parent dbc35db820b4d90303b57362fcee6b875ffe2b04 tweak diff -r dbc35db820b4 -r 0118da5b64f4 paper/chapter2.tex --- a/paper/chapter2.tex Mon Feb 18 21:34:48 2019 +0900 +++ b/paper/chapter2.tex Mon Feb 18 21:51:47 2019 +0900 @@ -36,7 +36,7 @@ CodeGear間の入出力の受け渡しは引数を利用して行う。 -これは軽量継続時に、 CodeGearの入出力のインターフェイスを揃えることで、 引数で与えられたレジスタを変更せずに繊維する事が可能であるためである。 +これは軽量継続時に、 CodeGearの入出力のインターフェイスを揃えることで、 引数で与えられたレジスタを変更せずに遷移する事が可能であるためである。 実際にCbCで書いたコード例をソースコード\ref{cbc_example_test}に示し、 コード中での状態遷移を図\ref{fig:cbc_example_test}に示す。 @@ -78,7 +78,7 @@ この際にCodeGearを利用していない場合は、 通常のCプログラムとしてコンパイルを行う。 本研究で検証するMoarVMのビルドにおいても、 CbCで書き換えたソースコードがあるMoarVMと、 手を加えていないオリジナルのC言語で実装されたMoarVMを同一のCbCコンパイラでビルドする事が可能である。 -また、C言語の関数からCodeGearへ繊維することはgoto文で可能である。 +また、C言語の関数からCodeGearへ遷移することはgoto文で可能である。 CodeGear中でCの関数を呼び出し、 その結果を受取り、 次のCodeGearに遷移する事も通常のCのプログラミング同様可能である。 しかしCodeGearからCの関数に再び戻り、 CodeGear同士の遷移から外れるように実装したい場合がある。 diff -r dbc35db820b4 -r 0118da5b64f4 paper/chapter3.tex --- a/paper/chapter3.tex Mon Feb 18 21:34:48 2019 +0900 +++ b/paper/chapter3.tex Mon Feb 18 21:51:47 2019 +0900 @@ -41,15 +41,15 @@ \label{fig:perl6nqp} \end{figure} -Perl6そのものはNQPで大本が記述されており、 その上にPerl6自身で記述された箇所が存在する。 +Perl6そのものはNQPでおおよそが記述されており、 その上にPerl6自身で記述された箇所が存在する。 図\ref{fig:perl6nqp}に示すとおり、 MoarVMが解釈するのはNQPが発行したMoarVMバイトコードである。 Perl6のプログラムはPerl6及びNQPコンパイラによってMoarVMバイトコードに変換され、 MoarVMが評価する。 現在はMoarVMの他にJVMも動作環境として選択可能であるが、 JVM側にはMoarVMと比較して実装された機能が少ないなどの特徴がある。 -MoarMVそのものはPerl6やNQPプログラムを直接は評価する事が出来ない。 -従って、 NQP及びPerl6で書かれているRakudoをソースコードからビルドする際は、 予めNQPインタプリタであるnqpをビルドする必要が存在する。 +MoarVMそのものはPerl6やNQPプログラムを直接は評価する事が出来ない。 +従って、 NQP及びPerl6で書かれているRakudoをソースコードからビルドする際は、 予めNQPインタプリタであるコマンドのnqpをビルドする必要が存在する。 Rakudoのビルド時にはこのnqpと、 nqpが動作するVMを設定として与える必要がある。 -この両者を指定しない場合、 ビルド時に動的にNQP、 MoarVMをソースコードをダウンロードしビルドを行う。 +この両者を指定しない場合、 ビルド時に動的にNQP、 MoarVMのソースコードをダウンロードし自動的にビルドを行う。 実際にNQPで記述されたRakudoの実装の一部をソースコード\ref{nqp_on_rakud}に示す。 \lstinputlisting[frame=lrbt, label=nqp_on_rakud, caption=Rakudoの実装の一部]{./codes/src_main.nqp} diff -r dbc35db820b4 -r 0118da5b64f4 paper/main.pdf Binary file paper/main.pdf has changed diff -r dbc35db820b4 -r 0118da5b64f4 presen/slide.html --- a/presen/slide.html Mon Feb 18 21:34:48 2019 +0900 +++ b/presen/slide.html Mon Feb 18 21:51:47 2019 +0900 @@ -112,8 +112,30 @@ + + + + + +
+ +

Continuation Based C (CbC)

+ +
extern int printf(const char*,...);
@@ -150,24 +172,6 @@
 
 
-

CbCの現在の実装

- -
    -
  • CbCは現在3種類の実装がある. -
      -
    • gcc (version 9.0.0)
    • -
    • llvm/clang (version 7.0.0)
    • -
    • micro-c
    • -
    -
  • -
- - - -
- -
-

言語処理系の応用

  • スクリプト言語処理系は, バイトコードにコンパイルされ, バイトコードをJITを用いてネイティブに変換する
  • diff -r dbc35db820b4 -r 0118da5b64f4 presen/slide.md --- a/presen/slide.md Mon Feb 18 21:34:48 2019 +0900 +++ b/presen/slide.md Mon Feb 18 21:51:47 2019 +0900 @@ -17,8 +17,18 @@ ## Continuation Based C (CbC) - Continuation Based C (CbC) はCodeGearを単位として用いたプログラミング言語である. - CodeGearはCの通常の関数呼び出しとは異なり,スタックに値を積まず, 次のCodeGearにgoto文によって遷移する. -- CodeGearはCの関数宣言の型名の代わりに`__code`と書く事で宣言出来る. -- CodeGearの引数は, 各CodeGearの入出力として利用する. +- Cの関数呼び出しとは異なり、 goto文ではスタックを利用しない +- CodeGear同士の移動は、 状態遷移として捉える事が出来る + +- CbCは現在3種類の実装がある. + - gcc (version 9.0.0) + - llvm/clang (version 7.0.0) + - micro-c + +## Continuation Based C (CbC) + +- CodeGearはCの関数宣言の型名の代わりに`__code`と書く事で宣言出来る +- CodeGearの引数は, 各CodeGearの入出力として利用する ``` extern int printf(const char*,...); @@ -49,12 +59,6 @@ } ``` -## CbCの現在の実装 - -- CbCは現在3種類の実装がある. - - gcc (version 9.0.0) - - llvm/clang (version 7.0.0) - - micro-c ## 言語処理系の応用 - スクリプト言語処理系は, バイトコードにコンパイルされ, バイトコードをJITを用いてネイティブに変換する diff -r dbc35db820b4 -r 0118da5b64f4 presen/slide.pdf.html --- a/presen/slide.pdf.html Mon Feb 18 21:34:48 2019 +0900 +++ b/presen/slide.pdf.html Mon Feb 18 21:51:47 2019 +0900 @@ -96,8 +96,30 @@
    • Continuation Based C (CbC) はCodeGearを単位として用いたプログラミング言語である.
    • CodeGearはCの通常の関数呼び出しとは異なり,スタックに値を積まず, 次のCodeGearにgoto文によって遷移する.
    • -
    • CodeGearはCの関数宣言の型名の代わりに__codeと書く事で宣言出来る.
    • -
    • CodeGearの引数は, 各CodeGearの入出力として利用する.
    • +
    • Cの関数呼び出しとは異なり、 goto文ではスタックを利用しない
    • +
    • +

      CodeGear同士の移動は、 状態遷移として捉える事が出来る

      +
    • +
    • CbCは現在3種類の実装がある. +
        +
      • gcc (version 9.0.0)
      • +
      • llvm/clang (version 7.0.0)
      • +
      • micro-c
      • +
      +
    • +
    + + + +
+ +
+ +

Continuation Based C (CbC)

+ +
    +
  • CodeGearはCの関数宣言の型名の代わりに__codeと書く事で宣言出来る
  • +
  • CodeGearの引数は, 各CodeGearの入出力として利用する
extern int printf(const char*,...);
@@ -134,24 +156,6 @@
 
 
-

CbCの現在の実装

- -
    -
  • CbCは現在3種類の実装がある. -
      -
    • gcc (version 9.0.0)
    • -
    • llvm/clang (version 7.0.0)
    • -
    • micro-c
    • -
    -
  • -
- - - -
- -
-

言語処理系の応用

  • スクリプト言語処理系は, バイトコードにコンパイルされ, バイトコードをJITを用いてネイティブに変換する