● 関数リファレンス

タグのリセット

    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