Xojoをどうぞ

昔語り==年寄りの戯言==

0 コメント
views
0 フォロー

setjump()とlongjum()って知ってますか?

C言語のライブラリにあるsetjump()/longjump()って関数をご存知ですか?
1980年代前半に初めてC言語でシステムを開発していた頃、まともなCコンパイラはUN*Xに付属するものだけで、
開発しているのか、コンパイラのバグ取りをしているのかも判らないブラックな環境でした。

教科書はK&Rのプログラミング言語Cって言うやつだけ、後に石田先生が日本語版を出されるまでは英語版を
辞書片手に頑張っておりました。

ある日、覚醒しました。こんなに苦労するならソースコード読んだ方が早いんじゃ無いかと!
著作権のある会社と交渉する事数十回、商務省(アメリカの)輸出許可を無事取得して
ソースコードのテープリールが届きました!
そう、この頃は未だ磁気ディスクか磁気テープなのです。😂

なので、とある所に依頼して、磁気テープを読んでもらって、シリアル通信でプログラムコードを
送ってもらったのですが、シリアルではエラーが起きる事が当たり前で、その部分が欠落したり
文字化けします。また、特殊なコード体系ですので、文字変換も行わなければならず、とっても面倒くさい
体験をしました。

で、ここからが本題です。
このソースコードUN*Xの本体なのですが、全てをC言語で書かれているのでびっくり!
当時の私はコア部分はアセンブラかなと思ったのですが、ライブラリの一部がアセンブラ記述されているだけで
フルにC言語なのです。

その貴重なアセンブラ部分がsetjump()/longjum()なのですよ。
まぁ、ここはCPU機種固有の部分なので、そうならざるを得ないのですが、…

解答はまたの機会に、でわ〜

ひろやん
作成: 2024/09/12 (木) 15:01:15
通報 ...