[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

17.10 暗黙のライブラリルーチン呼び出し

この節では、ライブラリルーチンの暗黙的な呼び出しについて説明する。

MULSI3_LIBCALL

符号付きのワード同士の乗算の際に呼び出すべき関数名を与える C の 文字列定数。 このマクロを定義しない場合は、デフォルトの名前、__mulsi3 が使われる。 __mulsi3 は ‘libgcc.a’ で定義される。

DIVSI3_LIBCALL

符号付きのワード同士の除算の際に呼び出すべき関数名を与える C の 文字列定数。 このマクロを定義しない場合は、デフォルトの名前、__divsi3 が使われる。 __divsi3 は ‘libgcc.a’ で定義される。

UDIVSI3_LIBCALL

符号なしのワード同士の除算の際に呼び出すべき関数名を与える C の 文字列定数。 このマクロを定義しない場合は、デフォルトの名前、__udivsi3 が使われる。 __udivsi3 は ‘libgcc.a’ で定義される。

MODSI3_LIBCALL

C の文字列定数。これは、符号付きの全ワードをもう一つの符号付き全ワードで 割った余りを求めるために呼び出す関数名を与える。 このマクロを定義しないと、デフォルトの名前が使われる。 これは、__modsi3 であり、‘libgcc.a’ で定義されている関数である。

UMODSI3_LIBCALL

C の文字列定数。これは、符号なしの全ワードをもう一つの符号なし全ワードで 割った余りを求めるために呼び出す関数名を与える。 このマクロを定義しないと、デフォルトの名前が使われる。 これは、__umodsi3 であり、‘libgcc.a’ で定義されている関数である。

MULDI3_LIBCALL

C の文字列定数。これは、符号付きの2ワードともう一つの符号付き2ワードの 積を求めるために呼び出す関数名を与える。 このマクロを定義しないと、デフォルトの名前が使われる。 これは、__muldi3 であり、‘libgcc.a’ で定義されている関数である。

DIVDI3_LIBCALL

C の文字列定数。これは、符号付きのダブルワード同士の 商を求めるために呼び出す関数名を与える。 このマクロを定義しないと、デフォルトの名前が使われる。 これは、__divdi3 であり、‘libgcc.a’ で定義されている関数である。

UDIVDI3_LIBCALL

C の文字列定数。これは、符号なしのダブルワード同士の 商を求めるために呼び出す関数名を与える。 このマクロを定義しないと、デフォルトの名前が使われる。 これは、__udivdi3 であり、‘libgcc.a’ で定義されている関数である。

MODDI3_LIBCALL

C の文字列定数。これは、符号付きのダブルワード同士の 剰余を求めるために呼び出す関数名を与える。 このマクロを定義しないと、デフォルトの名前が使われる。 これは、__moddi3 であり、‘libgcc.a’ で定義されている関数である。

UMODDI3_LIBCALL

C の文字列定数。これは、符号なしの(ダブル?)ワード同士の 剰余を求めるために呼び出す関数名を与える。 このマクロを定義しないと、デフォルトの名前が使われる。 これは、__umoddi3 であり、‘libgcc.a’ で定義されている関数である。

INIT_TARGET_OPTABS

一個の C の文。この文は、ライブラリルーチンの宣言を追加して、 既存のものの名前を付け替える。init_optabs は、 全ての通常ライブラリルーチンを初期化した後、このマクロを呼び出す。

TARGET_EDOM

ターゲット機種の EDOM の値を、C の整数定数式として表したもの。 このマクロを定義しない場合は、GNU CC は EDOM の値を errno に 直接置こうとはしない。 ‘/usr/include/errno.h’ を見て、読者のシステムでの EDOM の 値を探すこと。

TARGET_EDOM を定義しないと、コンパイルされたコードが、 そのライブラリ関数を呼び出し、エラーを報告させることで、 ドメインエラーを報告する。 読者のシステムの数学関数がエラーがあるときに matherr を 使うなら、TARGET_EDOMO を未定義とし、通常通り matherr が 使われるようにすべきである。

GEN_ERRNO_RTX

グローバル「変数」 errno を参照する RTL 式を作る C の式として このマクロを定義する。 (システムによっては、errno は実際には変数ではない可能性がある。) このマクロを定義しない場合は、適切なデフォルトが使われる。

TARGET_MEM_FUNCTIONS

GNU CC が、BSD の関数 bcopybzero ではなく、 System V(と ANSI C) の関数 memcpymemset の呼び出しを 生成すべきなら、このマクロを定義する。

LIBGCC_NEEDS_DOUBLE

float 型の引数だけがライブラリ関数に渡せない(そのため double に変換しなければならない)場合は、このマクロを定義する。 このマクロは、ライブラリ呼び出しがどのように生成されるのかと ‘libgcc1.c’ の中のライブラリルーチンがどのように引数を受け取るのか の両方に影響する。 i860 のように、浮動小数点引数と固定小数点引数では 渡し方が異なる場合には役に立つマクロである。

FLOAT_ARG_TYPE

ライブラリルーチンが float 型の引数を取り出す時に使われる 型を変えたい場合はこのマクロで定義する。 (デフォルトでは、floatint の共用体型を使う。)

float にすれば良いように思うだろうが、旧来の C コンパイラでは うまく行かない。float として宣言されている全ての引数が double として渡されることを想定しているからである。 この float から double の変換を避けるために、 ライブラリルーチンは、その値を何か他の型として要求し、その後で float として扱う。

システムによっては、このために使える他の型がない場合もある。 そういうシステムでは、LIBGCC_NEEDS_DOUBLE を代わりに使って、 その値を渡される前に double に強制的に変換するように しなければならない。

FLOATIFY (passed-value)

ライブラリルーチンが float 型の引数を渡された型の代わりに float として再度指示する方法を変えたい場合はこのマクロを定義する。 型を変えたい場合はこのマクロで定義する。 デフォルトでは、前出の共用体の float フィールドを取る式である。

FLOAT_VALUE_TYPE

ライブラリルーチンが、float 型を持つべき値を返すのに 使われる型を変えるには、このマクロを定義する。 (デフォルトでは int になる。)

float にすれば良いように思うだろうが、旧来の C コンパイラでは うまく行かない。float として宣言された値を不必要に double に変換するからである。

INTIFY (float-value)

float 型を返すライブラリルーチンの値を、それを返すためには どのようにパッケージするべきか、その方法を変更したいときは このマクロを定義する。これらの関数は実際に FLOAT_VALUE_TYPE(普通 int になる)型を返すように宣言される。

これらの値は float 型として返すことはできない。 なぜなら、旧来の C コンパイラは常にの値を double に変換して しまうからである。

intify という名前の局所変数が、マクロ INTIFY を使うときは いつでも利用可能である。これは、float 型のフィールド fFLOAT_VALUE_TTYPE 型か int 型のフィールド i とから なる共用体である。

このマクロを定義しない場合の、デフォルトの定義の動作は、この値を その共用体を通してコピーする。

nongcc_SI_type

このマクロは、システムの C コンパイラで SImode に対応する データ型名を定義する。

その型が通常の long int なら、このマクロを定義する必要はない。

nongcc_word_type

このマクロは、システムの C コンパイラで word_mode に対応する データ型名を定義する。

その型が通常の long int なら、このマクロを定義する必要はない。

perform_…

これらのマクロは、‘libgcc1.c’ 中のライブラリルーチン群にある、 float 型と double 型についての様々な算術演算を 実行する C の文を明示的に提供するように定義する。 これらのマクロとその引数の完全なリストについては ‘libgcc1.c’ を 見ること。

ほとんどの機種では、これらのマクロはどれも定義する必要がない。 何故なら、システム付属の C コンパイラが面倒を見るからである。

NEXT_OBJC_RUNTIME

このマクロは、NeXT システムの呼び出し規約を使って Objective C の メッセージを送信するためのコードを生成するように定義する。 この呼び出し規約には、オブジェクト、セレクタ、メソッド引数を全て 一度にメソッド検索ライブラリ関数に渡すことが含まれる。

デフォルトの呼び出し規約は、オブジェクトと検索関数のセレクタを渡すだけである。 検索関数はメソッドへのポインタを返す。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

This document was generated using texi2html 1.78.