Transmit_as dan Represent_as

Transmit_as dan represent_as berbagi tata letak yang sama kecuali untuk token utama; token membaca FC_TRANSMIT_AS atau FC_REPRESENT_AS, tetapi kode yang mendasar adalah umum.

Deskripsi memiliki tata letak berikut:

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>

Bendera<1> byte terdiri dari nibble bendera atas dan nibble keselarasan bawah.

Nibble perataan menjaga keselarasan kawat dari jenis yang ditransmisikan. Ini diperlukan ketika ukuran buffer dan menggunakan ukuran jenis yang ditransmisikan dari kode format.

Bendera nibble dapat memiliki bendera berikut:

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

Bendera PRESENTED_TYPE_IS_ARRAY menandai argumen transmisi tingkat atas sebagai (atau mewakili sebagai) menjadi array dari sesuatu dan nilai yang diteruskan. Penerjemah –Oi menggunakan bendera ini untuk melangkahi argumen seperti itu (yang sebenarnya merupakan penunjuk pada tumpukan, bukan array). Dua bendera lainnya juga hanya digunakan di interpreter sebelumnya untuk melangkah dengan benar di atas jenis yang disajikan pada tumpukan.

quintuple_index<2> adalah indeks quintuple rutin panggilan balik (ini sebenarnya merupakan quadruple) fungsi. Tabel ini umum untuk ditransmisikan sebagai dan mewakili sebagai dan ada pemetaan yang jelas untuk posisi rutinitas, seperti yang ditransmisikan layanan titik masuk yang sama sebagai dan mewakili sebagai kode. Pemetaannya from_local => to_xmit, to_local => from_xmit, free_inst => free_xmit, free_local => free_inst.

presented_type_memory_size<2> selalu menyediakan ukuran untuk jenis yang disajikan/lokal, termasuk tidak diketahui mewakili sebagai jenis.

transmitted_type_buffer_size<2> adalah nol, ketika ukurannya bervariasi, atau ukuran tetap aktual. Ini adalah pengoptimalan yang memungkinkan melompati beberapa panggilan balik saat mengukur buffer.

transmitted_type_offset<2> adalah offset jenis relatif biasa ke string format jenis yang ditransmisikan.