Haskellを使ったCortex-M3プログラミング 13
ストーリー by hylom
高級言語のでマイコン操作がブームになるか 部門より
高級言語のでマイコン操作がブームになるか 部門より
あるAnonymous Coward 曰く、
RAMを40kBしか搭載していないCortex-M3上でHaskellコードが動いたそうだ。ここでは通常のHaskellプログラミングで使われているGHCコンパイラではなく、jhc というコンパイラを改造したAjhcコンパイラなるものを使っている。
このAjhcについての解説は「Ajhcプロジェクトはじめよう」というサイトで読める。
昔話をし出したら、普通じゃん。 (スコア:1)
RAM 40KiB で動いたって、昔なら普通の話じゃないかな。
32bit CPU だというところが肝なのか?
およそ四半世紀前に、大学の計算機の授業で、Apple ][ 互換マシンで BigNum サポートの Lisp (しかも簡単なフルスクリーンエディタつき)を使ったことがあるけどな。
Re:昔話をし出したら、普通じゃん。 (スコア:1)
オリジナルのjhcの出すコードが小さくランタイムもほとんどないというのが胆です
ただの、とうのもなんだがajhcはただの移植
AppleIIのLispは中西正和先生のやつかな?
Re: (スコア:0)
ご名答。
Re: (スコア:0)
RAM 40KiB で動いたって、昔なら普通の話じゃないかな。
私の昔だと64kしばりがminimumでしたが、、、って32bitだから的とかそこが論点でないような気がしてます。
ajhcを作った方のスライドによると、Metasepiというプロジェクトの一貫?のようです。(もっとも、スライドの中にはajhcはでてこないのですが。。。)
http://www.slideshare.net/master_q/what-is-metasepi [slideshare.net]
そもそも、ajhcが大本のプロジェクト停滞→フォーク→やってみたぜっ!てことなんでしょうかね?(´・ω・`)
# λカの娘の話はよくわからないのでついていけなかったのですが、コウイカの骨ってかっこいいですよね
Re: (スコア:0)
昔のCPUは、主な命令8~16bit長でレジスタ8bit長だったから、プログラムメモリもデータメモリもbyte換算で小さかった。
今時のCPUは、主な命令16~32bit長でレジスタ32bit長だったから、同じプログラムがword換算のステップ数が同じでもbyte換算でメモリは2~4倍必要になる。
実際は、乗算器とか8bit以上の数を一回で計算できるとか、プログラムを改良してステップ数を減らせるので、同じアルゴリズムでもメモリ量はそこまで開かないですが。
もちろん、ロード・ストアドによるレジスタ演算のみとメモリ同志でも演算できるアーキテクチャの違いも命令ステップ数やパイプラインの使用率に関係するので、今どきのRISC CPUでこれだけメモリを減らせたのは、うまくやったといえるのではないでしょうか。
今も昔も、インタプリタやVMの仕様が比較的CPUのアーキテクチャと相性が良ければ、工夫して性能を上げたりメモリの使用量を減らしたりできるということでしょうか。
Re: (スコア:0)
Haskell は遅延評価言語なので、Lisp のような単純な言語とはランタイムの規模が桁違いになるように思います。
得てして (スコア:1)
動いた時点で満足して終わり
コードかコンパイラか (スコア:0)
ソースコードが凄いのかコンパイラが凄いのか。
多分両方なのだろうけど。
ほんとどうでもいいけど (スコア:0)
Cortex-M3を使ったHaskellプログラミング、じゃないんですね~
実験 or 実用? (スコア:0)
それとも単に動かしてみることの意義を見い出している段階なのかな?
Re: (スコア:0)
どう見ても実験以外に使えないっしょ
メモリ残量にもの凄く気を遣ってかかなきゃいけないってHaskell使うときかなり困るんじゃ?
ARMの開発全般だと意味違うんだろうけどCortexM3はさすがに話題作り兼、実験としかおもえない。
Re: (スコア:0)
いまはARMボードたいていCortexだから関係ないんじゃない?
Re: (スコア:0)
普通にHaskellを使いたいならCortexはCortexでもA系を持ってくるでしょ。