LispセマンティクスとCの低レベル操作を備えたLispの方言はありますか? 任意のメモリ アドレス (仮想メモリまたは物理メモリ) を取得し、それを使用して何かを実行するようなもの。ハードウェア デバイスへのポインタ...
例えば:
(defvar a '(1 2 3 4)) ;; I have a list
(defvar b (cdr a)) ;; b is the cdr of a. But I want b to
;; actually refer to the tail of a
(setf b '(4 5 6)) ;; b now has new value, but a remains unchanged
私が望むのは、Lisp を使用して低レベルの問題を表現することです。たとえば、ベア メタルで Lisp を実行しているときに、個々のバイトとビットを制御するにはどうすればよいでしょうか? C では、ポインターを取得し、ポインター演算を実行して、メモリ空間 (仮想または物理) 内の任意の場所を指すことができます。ポインターは、ハードウェア設計者がデバイスおよび任意に定義したアドレスを指すこともできます。
なぜこれが必要なのですか?ええと、低レベルのプログラミングで Lisp を使用する方法を学びたいです。長期的には、学習用のシンプルな OS を書きたいと思っていますが、Lisp で。最初の理解のためにCでも書きますが、Cでしか書けない場合、どうすればOSの実装方法を理解していると確信できますか? OS を実装する方法を本当に理解できるのは、C 以外の言語でそれを書くことができるかどうかを確認するためだけだと思います。
私は、OS 用に C コア、その他すべて用に Lisp のようなものを書きたくありません。