ページビューの合計

イエスから目を離さないでいなさい。(へブル 12:2)

2017-07-15

LISPのコードを毎日読む01

秋の講義の準備で
LISPのソースコードを毎日読む
だんだん慣れてくる

LISPは初期化の部分と
インタープリタの部分がある
準備の部分でいろいろな構造のデータが並ぶ
一番やっかいなのはデータの途中を
ポインタの値として使うこと

typedef short  id;
typedef unsigned long  obj;
struct _cell {id ty,obj ob[2]};
struct _cell a;

でセル1個、((obj)&a+4)の番地を使う
これはa.ob[0]の番地a.obなの、セルのcar部分
ここを構造体のCAR番地って呼んだ
私がかってにつけた名前

#define type(x)  (*((id*)(((unsigned long)(x))-4)))

として、tyを参照、tyに値を保存 など利用する
こんなのいやね
でもおもしろい使い方だともね

忍、忍