Sdílet prostřednictvím


Transmit_as a Represent_as

Transmit_as a represent_as sdílet stejné rozložení s výjimkou počátečního tokenu; token čte FC_TRANSMIT_AS nebo FC_REPRESENT_AS, ale základní kód je běžný.

Popis má následující rozložení:

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>

Příznaky<1> bajtu se skládají z nitě horního příznaku a dolního zarovnání nibble.

Zarovnávací nibble udržuje zarovnání drátu přenášeného typu. To je potřeba při změně velikosti vyrovnávací paměti a použití přenášené velikosti typu z kódu formátu.

Nibble příznaku může mít následující příznaky:

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

Příznak PRESENTED_TYPE_IS_ARRAY označuje přenos nejvyšší úrovně jako argument (nebo představuje jako) pole něčeho a předávané hodnoty. Interpret –Oi používá tento příznak ke kroku takového argumentu (což je ve skutečnosti ukazatel na zásobník, nikoli pole). Ostatní dva příznaky se také používají pouze v předchozích interpretech ke správnému kroku nad prezentovaným typem v zásobníku.

Quintuple_index<2> je index rutinního quintuple zpětného volání (to je ve skutečnosti čtyřnásobný) funkcí. Tabulka je společná pro přenos jako a reprezentaci jako a existuje zřejmé mapování pro umístění rutin, stejně jako služba vstupních bodů, která je přenášena jako kódy a reprezentována jako kódy. Mapování je from_local => to_xmit, to_local => from_xmit, free_inst => free_xmit, free_local => free_inst.

Presented_type_memory_size<2> vždy poskytuje velikost prezentovaného/místního typu, včetně neznámých reprezentací jako typů.

Transmitted_type_buffer_size<2> je buď nula, pokud se velikost liší, nebo skutečná pevná velikost. Toto je optimalizace, která umožňuje přeskočit některé zpětná volání při změně velikosti vyrovnávací paměti.

Transmitted_type_offset<2> je obvyklý posun relativního typu na přenášený formátovací řetězec.