● 関数リファレンス
タグのリセット
int __stdcall floatex_resettag(int ntag);
引数
引数名 | 意味 |
ntag | リセットするタグのインデックス |
戻り値
正常終了は 1 を返します。エラーの場合は 0 を返します。
説明
指定のタグに空(11b)をセットします。
タグに空をセットしても、レジスタスタックの内容やスタックトップポインタには影響しません。
ntag < 0 または ntag > 7 の場合は、処理を行わず 0 を返し終了します。
この関数は、eax 以外の汎用レジスタの内容を変えません。また、EFLAGS の内容を保存します。
テスト.
#include <stdio.h>
#include <conio.h>
#include "floatex.h"
void print_reg(void); /* 「低水準操作」の「FPU 環境の保護」参照の事 */
void __cdecl main(void)
{
int i;
floatex_reset();
/* レジスタスタック全体に値をプッシュ */
_asm{
fld1 ; st(7)
fld1 ; st(6)
fld1 ; st(5)
fld1 ; st(4)
fld1 ; st(3)
fld1 ; st(2)
fld1 ; st(1)
fld1 ; st
}
print_reg();
getch(); /* コンソール上のキー入力で一時停止を解除 */
/*
-1 〜 8 の範囲でタグを順次リセット
(-1 と 8 の指定時にエラー表示がある)
*/
i = -1;
do{
if (!floatex_resettag(i))
printf("タグ指定エラー:%d\n",i);
else
print_reg();
getch();
}while(++i <= 8);
floatex_ldstr_term();
floatex_reset();
}
結果.
スタックトップ:R0
スタックフォルト:normal
ST(7):00 00 00 00 00 00 00 00:ST(0)
----------------------------------------------------
ST(0) : 1
ST(1) : 1
ST(2) : 1
ST(3) : 1
ST(4) : 1
ST(5) : 1
ST(6) : 1
ST(7) : 1
----------------------------------------------------
タグ指定エラー:-1
スタックトップ:R0
スタックフォルト:normal
ST(7):00 00 00 00 00 00 00 11:ST(0)
----------------------------------------------------
ST(0) : 空
ST(1) : 1
ST(2) : 1
ST(3) : 1
ST(4) : 1
ST(5) : 1
ST(6) : 1
ST(7) : 1
----------------------------------------------------
スタックトップ:R0
スタックフォルト:normal
ST(7):00 00 00 00 00 00 11 11:ST(0)
----------------------------------------------------
ST(0) : 空
ST(1) : 空
ST(2) : 1
ST(3) : 1
ST(4) : 1
ST(5) : 1
ST(6) : 1
ST(7) : 1
----------------------------------------------------
スタックトップ:R0
スタックフォルト:normal
ST(7):00 00 00 00 00 11 11 11:ST(0)
----------------------------------------------------
ST(0) : 空
ST(1) : 空
ST(2) : 空
ST(3) : 1
ST(4) : 1
ST(5) : 1
ST(6) : 1
ST(7) : 1
----------------------------------------------------
スタックトップ:R0
スタックフォルト:normal
ST(7):00 00 00 00 11 11 11 11:ST(0)
----------------------------------------------------
ST(0) : 空
ST(1) : 空
ST(2) : 空
ST(3) : 空
ST(4) : 1
ST(5) : 1
ST(6) : 1
ST(7) : 1
----------------------------------------------------
スタックトップ:R0
スタックフォルト:normal
ST(7):00 00 00 11 11 11 11 11:ST(0)
----------------------------------------------------
ST(0) : 空
ST(1) : 空
ST(2) : 空
ST(3) : 空
ST(4) : 空
ST(5) : 1
ST(6) : 1
ST(7) : 1
----------------------------------------------------
スタックトップ:R0
スタックフォルト:normal
ST(7):00 00 11 11 11 11 11 11:ST(0)
----------------------------------------------------
ST(0) : 空
ST(1) : 空
ST(2) : 空
ST(3) : 空
ST(4) : 空
ST(5) : 空
ST(6) : 1
ST(7) : 1
----------------------------------------------------
スタックトップ:R0
スタックフォルト:normal
ST(7):00 11 11 11 11 11 11 11:ST(0)
----------------------------------------------------
ST(0) : 空
ST(1) : 空
ST(2) : 空
ST(3) : 空
ST(4) : 空
ST(5) : 空
ST(6) : 空
ST(7) : 1
----------------------------------------------------
スタックトップ:R0
スタックフォルト:normal
ST(7):11 11 11 11 11 11 11 11:ST(0)
----------------------------------------------------
ST(0) : 空
ST(1) : 空
ST(2) : 空
ST(3) : 空
ST(4) : 空
ST(5) : 空
ST(6) : 空
ST(7) : 空
----------------------------------------------------
タグ指定エラー:8