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.
Implementations§
Trait Implementations§
Auto Trait Implementations§
impl<L> !Freeze for Item<L>
impl<L> RefUnwindSafe for Item<L>where
L: RefUnwindSafe,
impl<L> Send for Item<L>where
L: Send,
impl<L> Sync for Item<L>where
L: Sync,
impl<L> Unpin for Item<L>where
L: Unpin,
impl<L> UnwindSafe for Item<L>where
L: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit)