白石先生に質問です

 投稿者:名無しさん  投稿日:2019年11月19日(火)15時41分40秒
   BASICのヘルプに曰く、
>
実数値を取るDLL関数を利用する場合は,次の形式のASSIGN文を書く。
ASSIGN DLLファイル名 ,関数名 ,FPU
この形のASSIGN文を実行すると,FPUのスタックトップレジスタをPOPし,その値を関数の値とする。

<補足> DLLからWindowsの例外を受け取ると,ASSIGN文でExtype=-9900の例外を生成する。但し,DLLで発生する可能性のある例外はDLLの内部で処理しておくべきである。
<補足> ASSIGN文はFPUのフラッグを保存しないので,DLLでFPUのフラッグを変更したときは,戻る前に復元しなければならない。
>
 この書式の通りにすなおに、とあるdll関数を定義したら、コンパイルエラー(すなわち「文法の誤り」ダイアログが表示される)となってしまいました。これはいったいどーいうことなんでしょーか? 因みに、OS、機種はWINDOWS 7 HOME,富士通F5260シリーズです。
 あと、補足にある、FPUのフラグの変更後の復元の方法についてもっと詳しく教えてください。例えば、win32 apiの一関数を例にとるとかで。
 よろしくお願いします。
 

Re: 白石先生に質問です

 投稿者:SHIRAISHI Kazuo  投稿日:2019年11月19日(火)20時41分8秒
  > No.4743[元記事へ]

十進BASIC FAQ
http://hp.vector.co.jp/authors/VA008683/ExtDLL.htm
http://hp.vector.co.jp/authors/VA008683/ExtDLL.htm
を参照してください。
FPUフラッグを変更する命令はFSTCWです。FSTCWを実行してControl Wordを変更したときは,元に戻さないと正常に動作しません。
 

戻る