namespace WhiteMagic.Assembly; /// /// The default backend. Hand-emits calling-convention /// trampolines and injection stubs using deterministic byte emitters /// (, , ). Has /// no native or third-party dependency — no FASM, no Iced. /// /// /// is not supported by this backend (it is a parse-free /// emitter, not a text assembler). Use (Phase 8) for /// arbitrary mnemonics. /// public class StubAssembler : IAssembler { /// /// Always thrown. StubAssembler does /// not parse text assembly; use IcedAssembler for that. public byte[] Assemble(string assemblyText, ulong origin = 0) { throw new NotSupportedException( "StubAssembler does not parse text assembly. " + "Use IcedAssembler (Phase 8) for arbitrary mnemonics."); } // ── Emit primitives ──────────────────────────────────────────────────── /// Appends a single byte to . public void EmitU8(List buffer, byte value) { buffer.Add(value); } /// Appends as 4 little-endian bytes. public void EmitU32(List buffer, uint value) { buffer.Add((byte)value); buffer.Add((byte)(value >> 8)); buffer.Add((byte)(value >> 16)); buffer.Add((byte)(value >> 24)); } /// Appends as 8 little-endian bytes. public void EmitU64(List buffer, ulong value) { EmitU32(buffer, (uint)value); EmitU32(buffer, (uint)(value >> 32)); } }