create every day - 福野泰介の一日一創

コンピューターの真の力を体感する、マシン語の凄さ体感プログラム

2015/10/10 23:55:00
#IchigoJam 

ARM Cortex-M0のマシン語に対応しているIchigoJam
圧倒的に速いマシン語の凄さを体感する、ランダム画面の書き換えデモをつくってみました。


BASICとマシン語、それぞれランダムに決めた文字で画面を埋め尽くすという内容は同じプログラムです。
マシン語は、コンピューターの説明書を元にマシン語である、数値をひとつひとつ並べていくことでも作成できますが、MacやWindowsなど大きなパソコンで動くコンパイラという変換プログラムを使って、自動生成することもできます。

#include <stdint.h> int16_t usr_calc(int16_t val, char* mem) { int i; for (i = 0; i < 32 * 24; i++) { mem[i + 0x900] = val; } return 0; }

こちらが画面を埋めるC言語で書いたプログラムです。
IchigoJam BASICがわかれば、なんとなく読めると思います。
こちらのツール「IchigoJam_bin2poke」を使うと、IchigoJam BASICのPOKE文を使ったプログラムに変換してくれます。
※Windowsでの解説「IchigoJamのメモリ内のバイナリデータをテキスト・プログラム化するツール ( プログラム ) - ボクにもわかる地上デジタル(ブログ) - Yahoo!ブログ

今回、1.1 beta 6 で、第二パラメーターにIchigoJam仮想RAMの先頭ポインタ(ただし、キャラクターのROMは含まない)を渡すようにしました。 mem+0x900からのVRAM領域を、forループを使って埋め尽くすプログラムとなっています。

IchigoJam BASICは、ひとつひとつのコマンドがおかしくないかを、コンピューターに見守らせている、保護者の方付きモードというイメージです。 簡単で安全ですが、動作速度はどうしても遅くなってしまいます。逆に、マシン語はひとつ間違うと簡単にフリーズしてしまいますが、動作は超高速。 IchigoJamのCPU、LPC1114の実力、秒間約5,000万回の計算能力をフルに使えます。


マシン語の拡張、入出力ポートの拡張(設定で最大11ポート出力!)を含む、IchigoJam ver 1.1 beta 6 は、Facebookグループ「IchigoJam-FAN」にて配布中です。 正式公開に向け、ぜひいろいろとご意見いただけるとうれしいです!

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY 福野泰介 - Taisuke Fukuno / @taisukef / high-res profile image