小さな埋め込みプロジェクトに適した解釈言語[終了]


8

小さなARM Cortex M3を搭載したmbedマイクロコントローラーを持っています。基本的に、プロジェクトに効果的なリソースは、最大25 KBのRAMと最大400 KBのフラッシュです。I / Oには、PS / 2キーボード、VGAフレームバッファー(文字出力付き)、およびプログラムの保存/読み込み用のSDカード(最大で数MB)があります。

私が物事に実装するプログラミング言語を理解しようとしているので、私は尋ねます。私は実装が簡単で、リソースを無駄にしないインタープリタード言語を探しています。私はこれも少なくともデバイス自体に書き込むことができるようにするつもりですが、エディターは解釈できます(そう、ブートストラップ)。

とにかく、私はいくつかの単純な言語を見てきました。いくつかの素晴らしい候補:

誰かがこのようなことをしたり、この法案に合う可能性のある言語を知っていたり、これまでに私の3人の候補者についてコメントしたりしていますか?


スケールが小さすぎてLUAに収まらない場合は、Cと、その言語での独自の実装に悩まされている可能性があります。あなたはスキームが合うように得ることができる場合、それは、独自のシンプルなスクリプト言語を記述するための偉大な候補だ。
ジミー・ホッファ

@JimmyHoffaあなたは私が自分のデバイスにスキームを実装し、そこからスクリプト言語をスキームに実装するべきだと言っていますか?二重解釈?笑
Earlz

いいえ、スキームでインタープリターを作成し、そのインタープリターをネイティブにコンパイルすることを指します。私は確かにこれよりスキームのためのより良いコンパイラがあるんだけど、ここでコンパイルスキームのための最初のGoogleポップだけど:matt.might.net/articles/compiling-scheme-to-c
ジミー・ホッファ

eLuaプロジェクトにもARM M3への移植版があることを付け加えたいと思います。これはあなたにとって役立つと思います。
Machado 2012

いくつかのTiny Basicインタープリターがあり(一部はCで記述されています)、合計メモリーフットプリントはわずか16kB(ASMで記述されたものの場合はさらに少ない)です。
hotpaw2 2016

回答:


6

あなたが説明したことについては、FORTHがおそらく理想的です。FORTHはあなたのものよりずっと小さなプラットフォームで日常的に動作します。(合計16KはFORTHの大きなマシンです。)以前にFORTHを見たことがない場合は、深刻な学習曲線が含まれることになります。

TinyScheme(私が覚えているように)と呼ばれるScheme実装があり、一見の価値があるかもしれません。私は最初に、それを彼のマルウェアエンジンのコアとして使用した男についてのスラッシュドットの作品からそれについて聞いた。(そうです、そうです。彼の仕事は何かのためにマルウェアを作成することでしたが、TinySchemeでそれを行うと、ペイロードがはるかに小さくなる可能性があります。)


TinySchemeを見ました。私はそれがうまくいくと思いますが、Schemeをまったく知りません。だから、私はForthの方が頭を包む方が簡単だと思っていました(それがそうです)。私はForthが非常に大きな学習曲線を持っているとは考えていません。ただし、以前にスタックマシンで作業したことがあるので、それがおそらく私にとってかなり自然なことです。Forthはこれに優れていますが、後で拡張してJITなどの
大まかな

つまり、要約すると。私は自分で(非準拠の)Forthインタープリターを作成することになりました。
Earlz 2012

Leo Brodieの古典的な「Starting FORTH」は、非常に古いバージョンの言語と環境(FORTH Inc.の16ビットpolyFORTH)を説明しているとしても、これまでに見つけたFORTHの中で最も優れた入門書です。コピーが見つかれば、Loeligerの「Threaded Interpretive Languages」は、Zilog Z80マイクロプロセッサにFORTHを実装する方法を非常にうまく説明しています。
John R. Strohm

11

私はルアが断然あなたの最善の策であると主張するつもりです。Luaは、Cを実行できる場所ならどこでもコンパイルできます。これは、最も軽量なスクリプト言語の1つです。言語として非常に柔軟であり、スキルも非常に移転可能です。Luaの特別に埋め込まれたバージョンもあります。

補遺:明らかに、メモリフットプリントを25K強に減らすことが可能です。

補遺2-物事がおかしくなります:このSO質問によってもたらされるオプションがあります。リスは、私が聞いたことがあるが使用されていない言語です。参照カウントを使用しているため、Luaよりも明らかに小さくなっています。


ありますがeLua、リソースの範囲外です。基本的に32KのRAMが必要なものすべてに必要です
Earlz

1
ルアはフットプリントでフォースと競争することはできません。
SKロジック

NEverは可能だと言った。Luaは、ほとんどのプログラマにとってはそれほど異質ではありません。
ワールドエンジニア


プロセッサに少しRAMがあればeLuaを使用しますが、残念ながらそれは使用しないので、小さなForthコンパイラ
Earlz

1

埋め込み可能なスクリプト言語に関して、私がよく知っている2つはLUA PAWNです。

組み込みシステムに移植されたPythonなどの言語のバージョンはあると思いますが、組み込みLinuxの種類が多い傾向があります。オプションによっては、プラットフォームによっては(8K ROMを搭載した小さなMCUか、組み込みPCかはわかりません)。


1

Tcl / Tkとそのルーターでの使用について少し前に読んだことを覚えています。

http://www.tcl.tk/about/uses.htmlにある「Embedded Development」の段落からの抜粋:

Tclは非常にコンパクトな言語であり、特殊なハードウェアと簡単に統合できるため、組み込み開発の一般的な選択肢です。Tclは、シスコや他の多くのネットワーキング製品、およびTivoを含むセットトップボックスなど、多くのデバイスに隠されています。もちろん、他のソフトウェアプロジェクトにTclを埋め込むことも非常に人気があり、電子設計自動化(EDA)やコンピューター支援設計(CAD)アプリケーションなど、一部の業界では支配的な制御言語になっています。


1
Tclとともにtkをドラッグする必要はありません-Tclはそれ自体が素晴らしい言語です。-あなたはまた、「TinyTcl」考えるかもしれませんsourceforge.net/projects/tinytcl
ブライアンオークリー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.