Teilen über


Transmit_as und Represent_as

Transmit_as und represent_as teilen dasselbe Layout mit Ausnahme des führenden Tokens; das Token liest FC_TRANSMIT_AS oder FC_REPRESENT_AS, der zugrunde liegende Code ist jedoch üblich.

Die Beschreibung weist das folgende Layout auf:

FC_TRANSMIT_AS | FC_REPRESENT_AS
flags<1>
quintuple_index<2>
presented_type_memory_size<2>
transmitted_type_buffer_size<2>
transmitted_type_offset<2>

Die Flags<1> Byte bestehen aus dem oberen Flag-Nibble und dem unteren Ausrichtungsknabbel.

Der Ausrichtungsknabbel behält die Drahtausrichtung des übertragenen Typs bei. Dies ist erforderlich, wenn die Größe des Puffers und die übertragene Typgröße aus dem Formatcode verwendet wird.

Das Flag nibble kann die folgenden Flags aufweisen:

#define PRESENTED_TYPE_IS_ARRAY     0x10
#define PRESENTED_TYPE_ALIGN_4      0x20
#define PRESENTED_TYPE_ALIGN_8      0x40

Das kennzeichen PRESENTED_TYPE_IS_ARRAY kennzeichnet ein Übertragungsargument der obersten Ebene als (oder als dargestellt) als Array von etwas und übergebenem Wert. Der -Oi--Dolmetscher verwendet dieses Kennzeichen, um ein solches Argument zu übergehen (das ist eigentlich ein Zeiger auf stapel, nicht das Array). Die anderen beiden Flags werden auch nur in früheren Dolmetschern verwendet, um korrekt über einen präsentierten Typ auf dem Stapel zu wechseln.

Die quintuple_index<2> ist ein Index der Rückrufroutine Quintuple (dies ist tatsächlich ein Vierfach) von Funktionen. Die Tabelle ist üblich, sowohl als auch darzustellen, als auch darzustellen, und es gibt eine offensichtliche Zuordnung für die Position der Routinen, wie die gleiche Einstiegspunkte-Dienstübertragung als und als Codes darstellen. Die Zuordnung ist from_local => to_xmit, to_local => from_xmit, free_inst => free_xmit, free_local => free_inst.

Die presented_type_memory_size<2> stellt immer eine Größe für den präsentierten/lokalen Typ bereit, einschließlich unbekannter Darstellung als Typen.

Die transmitted_type_buffer_size<2> ist entweder Null, wenn die Größe variiert, oder die tatsächliche feste Größe. Dies ist eine Optimierung, die das Überspringen einiger Rückrufe beim Skalieren des Puffers ermöglicht.

Die transmitted_type_offset<2> ist der übliche relative Typoffset zur Zeichenfolge des übertragenen Typformats.