pub enum Item<L> {
Label(L),
Align(NonZeroU32),
DecodingTable(DecodeNode<L>),
FnHeader(CallingConvention, u32),
Instr(Instr<L>),
MysteryString(MysteryString),
CompressedString(Bytes),
Utf32String(Utf32String),
Blob(Bytes),
LabelRef(LabelRef<L>, u8),
}
Expand description
An item of top-level content in a story file assembly.
Variants§
Label(L)
A label whose address can be dereferenced.
Align(NonZeroU32)
Generates padding such that the next item is aligned to a multiple of
the given NonZeroU32
, which will likely be a power of two but
arbitrary values are accepted. Glulx itself never requires any item in
main memory to be aligned, but you can use this if you are generating
code which assumes some alignment.
DecodingTable(DecodeNode<L>)
A string decoding table.
FnHeader(CallingConvention, u32)
A header for a function, specifying its calling convention and how many locals it allocates. Since one- and two-byte locals have been deprecated since 2010, this assembler does not support them and all locals are taken to be four bytes.
Instr(Instr<L>)
An instruction.
MysteryString(MysteryString)
An E0
string (usually Latin-1).
CompressedString(Bytes)
An E1
string of Huffman-coded data, decompressed via a decoding table.
No validity checks are performed.
Utf32String(Utf32String)
An E2
(Unicode) string.
Blob(Bytes)
Some arbitrary bytes to be serialized verbatim.
LabelRef(LabelRef<L>, u8)
Four bytes representing the absolute adddress of the given label+offset and right-shift.