電子ブロック工房:
Deprecated: Function strftime() is deprecated in /home/u109394186/domains/rad51.net/public_html/jeans/jeans/libs/blog.php on line 333
2023年 03月の記事

MachiKania type Pで、BASICコードからCで書かれたコードを呼び出す、その2 [MachiKania]

2023年3月26日

MachiKania type P の ver 1.2 では、BASIC コードから C で書かれたコードを呼び出すための機能追加がされた。ひとつ前の記事では、CプロジェクトをHEXファイルに変換し、そこから必要なC関数を呼び出す方法について述べた。この記事では、もう一つの方法について述べる。

HEXファイルに変換する方法においては、複雑なCでのコーディングが必要な多くの事例に対応できる。一つの例として、正規表現エンジンを実装するMachiKaniaクラス(REGEXP クラス)の実装について述べた。

この記事で述べる方法では、Cのプロジェクトから必要なコードを抜き取って BASIC コードに変換してプログラムに埋め込む方法を取る。HEXを介する方法と比べた長所は、以下の通り。

1.一つの BASIC ファイルの中に C コードを埋め込むことができる
2.HEX を介した方法では HEX コードのメモリ上での配置位置を考慮する必要があったが、この方法ではその必要が無い
3.C プログラムの中から必要なものだけを抜き取って BASIC プログラムに埋め込むので、メモリー占有領域を最小限にできる


他方、短所は以下の通り

1.複雑な C プログラムでは対応できない場合がある

従って、それほど大きくない C のプログラムの場合はこの記事で述べる方法が有利である。後に述べる「c_convert.php」スクリプトの実行でエラーが出る、あるいは、作成されたBASIC プログラムが意図したように動作しない場合は、HEXを介する方法に移行すればよい。

MachiKania type Pで、BASICコードからCで書かれたコードを呼び出す [MachiKania]

2023年3月26日

MachiKania type P の ver 1.2 では、BASIC コードから C で書かれたコードを呼び出すための機能追加がされた。この記事では、どのようにすれば C で書かれたコードを呼び出すことができるのかについて述べる。

方法は大きく分けて二通りあって、一つは RAM 上に HEX アプリケーションを読み込んでそこに含まれる機能を呼び出す方法である。RAM 上にアプリケーションを配置して HEX ファイルを作成する方法は、別の記事で紹介した。この記事では、作成したHEXファイル中にある C で関数をどのようにして呼び出すかについて述べる。この手法を用いて HELLO_CW アプリケーションREGEXP クラスを作成したので、それを例に挙げながら説明する。

もう一つは、C でビルドしたオブジェクトから、必要な機能だけをピックアップして、BASIC の EXEC ステートメントに変換して埋め込む方法である。簡単な C のコードを実行させる場合には、この方法が簡便でサイズもコンパクトにできるが、これについては、別の記事で取り上げることにする。

この記事では HEX アプリケーションを読み込んでそこに含まれる機能を呼び出す方法について述べたい。複雑な C のコードを呼び出すのに向いた方法である。