Perlゼミ はてな出張所

Perlゼミのはてな出張所。Perlイベントなどの紹介

仕様作成で根本的な誤りに気が付く - SPVM開発日記

SPVMの仕様書を書いているのですが、数値演算の仕様を書いているときに、根本的な勘違いに気が付く。

それは、数値計算Javaと同じ仕様にしようと思ったのですが、SPVMは、C言語のラッパーを目指しているので、C言語の仕様になるということ。

たとえば、他の環境向けにクロスコンパイルがなされたとしよう。すると、その処理系の演算規則が適用されることになる。

コンパイラオプションで、浮動小数点演算を切り替えたときに、その浮動小数点演算が適用される。

このように考えると、SPVMで数値演算の仕様を書くというのは、SPVMの演算が、C言語のどの演算に対応するのかを記述するということになる。

C言語で定義されているもの

C言語で動作が定義されているものについては、その動きをSPVMの仕様書に落とし込むことができる。

C言語で、未定義で処理系に依存とされているもの

C言語で、未定義で処理系依存とされているものは、SPVMの演算がどのC言語の演算に対応しているかとうことを仕様にする