Search Apps Documentation Source Content File Folder Download Copy Actions Download State String Boolean Number Struct Map Slice Pointer Function Closure Reference Nil Package Type Interface Unknown

guests.gno

26.31 Kb · 316 lines
  1package riscv
  2
  3// Compiled guests: programs a real compiler produced, shipped as the bytes it
  4// emitted.
  5//
  6// A hand-written test program proves the emulator agrees with the person who
  7// wrote it. A compiled one proves it agrees with LLVM, which is the only claim
  8// that matters for a machine whose whole premise is that every toolchain
  9// already targets it.
 10//
 11// The source, the linker script and the exact build command are in
 12// tools/riscv-guests/. `make words` there prints the image in the form below,
 13// so this is reproducible rather than magic.
 14
 15// guestFNV is tools/riscv-guests/fnv: it reads the call input, hashes it with
 16// FNV-1a, and writes eight hex digits back. 49 instructions, built with clang
 17// 19.1.7, `-march=rv32im -mabi=ilp32 -Os`.
 18//
 19// Worth reading as output rather than as a program. LLVM opens with a real
 20// function prologue spilling ra and s0 to a stack the host set up, materializes
 21// the 2166136261 offset basis as a lui/addi pair, and addresses its globals at
 22// 0x40000, far above a text segment the host refuses stores into.
 23var guestFNV = []uint32{
 24	0xFF010113, 0x00112623, 0x00812423, 0x01010413,
 25	0x000405B7, 0x00058593, 0x03F00893, 0x10000613,
 26	0x00000513, 0x00000073, 0x811CA6B7, 0x02A05663,
 27	0x00A58633, 0xDC568513, 0x010006B7, 0x19368693,
 28	0x0005C703, 0x00E54533, 0x00158593, 0x02D50533,
 29	0xFEC598E3, 0x0080006F, 0xDC568513, 0x01C00593,
 30	0x00040637, 0x10060613, 0x00A00693, 0xFFC00713,
 31	0x00B557B3, 0x00F7F793, 0x00D7E663, 0x05778793,
 32	0x0080006F, 0x03078793, 0x00F60023, 0xFFC58593,
 33	0x00160613, 0xFCE59EE3, 0x000405B7, 0x10058593,
 34	0x04000893, 0x00800613, 0x00100513, 0x00000073,
 35	0x05D00893, 0x00000593, 0x00000613, 0x00000513,
 36	0x00000073,
 37}
 38
 39// GuestFNV returns the flat text image of the compiled FNV-1a guest, ready for
 40// [NewMachine] at [DefaultEntry]. A fresh slice per call, so a caller cannot
 41// mutate the copy everyone else gets.
 42func GuestFNV() []byte { return Image(guestFNV) }
 43
 44// guestLedger is tools/riscv-guests/ledger: a token in no_std Rust. It applies
 45// a script of mint, send and burn lines from the call input and writes the
 46// resulting balances back. 1,959 instructions, built with rustc 1.98.1 for
 47// riscv32im-unknown-none-elf.
 48//
 49// It links Rust's real core and compiler_builtins, which is what makes it more
 50// than a bigger FNV: a bounds check reaches core::panicking, and the balances
 51// are 64-bit, so a divide reaches __udivdi3 because RV32 has no 64-bit divide
 52// instruction. The emulator is running the standard library's own software
 53// arithmetic, not just compiler output.
 54var guestLedger = []uint32{
 55	0xFA010113, 0x04112E23, 0x04812C23, 0x04912A23, 0x05212823, 0x05312623, 0x05412423, 0x05512223,
 56	0x05612023, 0x03712E23, 0x03812C23, 0x03912A23, 0x03A12823, 0x03B12623, 0x00000513, 0x00000713,
 57	0x00000413, 0x00000B93, 0x000409B7, 0x00098993, 0x03F00893, 0x40000613, 0x00A00913, 0x40100B13,
 58	0x00400C13, 0x0F600493, 0x00040DB7, 0x400D8D93, 0x00098593, 0x00000073, 0x00050A13, 0x00A02533,
 59	0x00012C23, 0x40A00533, 0x01457CB3, 0x4B977A63, 0x40000593, 0x00070513, 0x00E5E463, 0x40000513,
 60	0x00170613, 0x000A0593, 0x01464463, 0x00060593, 0x00070A93, 0x71550263, 0x01598633, 0x00064D03,
 61	0x012D0863, 0x001A8A93, 0xFF5596E3, 0x00058A93, 0x43577A63, 0x6D6AF463, 0x00140413, 0x00143513,
 62	0x00AB8BB3, 0x40EA8633, 0x00E985B3, 0x01C10513, 0x00000097, 0x760080E7, 0x02012503, 0x40050463,
 63	0x00F00B13, 0x53851E63, 0x01C12503, 0x02412583, 0x02812603, 0x00054683, 0x06200713, 0x24E68A63,
 64	0x07300713, 0x12E68063, 0x06D00713, 0x50E69A63, 0x00154683, 0x06900713, 0x50E69463, 0x00254683,
 65	0x06E00713, 0x4EE69E63, 0x00354503, 0x07400693, 0x4ED51863, 0x01C10513, 0x00000097, 0x6F8080E7,
 66	0x01C12503, 0x00A12623, 0x02012C03, 0x02412583, 0x02812603, 0x01C10513, 0x00000097, 0x6D8080E7,
 67	0x02012503, 0xFF650593, 0x00A00B13, 0xFF700613, 0x5AC5E263, 0x01712A23, 0x00812823, 0x00000413,
 68	0x01C12583, 0x00000B93, 0x0005C603, 0xFC660693, 0x0FF6F693, 0x4696EC63, 0x00158593, 0x032436B3,
 69	0x001B9713, 0x003B9B93, 0x00EB8733, 0x00141793, 0x00341413, 0xFD060613, 0x00F407B3, 0x0FF67413,
 70	0x00E686B3, 0x00878433, 0x00F43BB3, 0xFFF50513, 0x01768BB3, 0xFA051AE3, 0x00C12503, 0x000C0593,
 71	0x00001097, 0x80C080E7, 0x00058693, 0x00100593, 0x52B51863, 0x00F00513, 0x5CD56663, 0x00369693,
 72	0x00DD86B3, 0x3806A503, 0x3846A583, 0x00850433, 0x017585B3, 0x00A43533, 0x00A58533, 0x3886A023,
 73	0x2B00006F, 0x00154683, 0x06500713, 0x3EE69A63, 0x00254683, 0x06E00713, 0x3EE69463, 0x00354503,
 74	0x06400693, 0x3CD51E63, 0x01C10513, 0x00000097, 0x5E4080E7, 0x01C12503, 0x00A12823, 0x02012503,
 75	0x00A12623, 0x02412583, 0x02812603, 0x01C10513, 0x00000097, 0x5C0080E7, 0x01C12C03, 0x02012503,
 76	0x00A12423, 0x02412583, 0x02812603, 0x01C10513, 0x00000097, 0x5A0080E7, 0x02012503, 0xFF650593,
 77	0x00A00B13, 0xFF700613, 0x46C5E663, 0x01812223, 0x01712A23, 0x00000B93, 0x01C12583, 0x00000C13,
 78	0x0005C603, 0xFC660693, 0x0FF6F693, 0x3296E863, 0x00158593, 0x032BB6B3, 0x001C1713, 0x003C1C13,
 79	0x00EC0733, 0x001B9793, 0x003B9B93, 0xFD060613, 0x00FB87B3, 0x0FF67B93, 0x00E686B3, 0x01778BB3,
 80	0x00FBBC33, 0xFFF50513, 0x01868C33, 0xFA051AE3, 0x01012503, 0x00C12583, 0x00000097, 0x5E0080E7,
 81	0x00058693, 0x00100593, 0x42B51C63, 0x00812823, 0x00F00513, 0x4AD56463, 0x00369693, 0x00DD8433,
 82	0x38442503, 0x11850C63, 0x01852533, 0x1180006F, 0x00154683, 0x07500713, 0x2CE69463, 0x00254683,
 83	0x07200713, 0x2AE69E63, 0x00354503, 0x06E00693, 0x2AD51863, 0x01C10513, 0x00000097, 0x4B8080E7,
 84	0x01C12503, 0x00A12623, 0x02012C03, 0x02412583, 0x02812603, 0x01C10513, 0x00000097, 0x498080E7,
 85	0x02012503, 0xFF650593, 0xFF700613, 0x36C5E263, 0x01712A23, 0x00812823, 0x00000413, 0x01C12583,
 86	0x00000B93, 0x0005C603, 0xFC660693, 0x0FF6F693, 0x2296EC63, 0x00158593, 0x032436B3, 0x001B9713,
 87	0x003B9B93, 0x00EB8733, 0x00141793, 0x00341413, 0xFD060613, 0x00F407B3, 0x0FF67413, 0x00E686B3,
 88	0x00878433, 0x00F43BB3, 0xFFF50513, 0x01768BB3, 0xFA051AE3, 0x00C12503, 0x000C0593, 0x00000097,
 89	0x4DC080E7, 0x00058693, 0x00100593, 0x34B51263, 0x00F00513, 0x38D56E63, 0x00369513, 0x00AD8533,
 90	0x38452603, 0x38052583, 0x40100B13, 0x00400C13, 0x0B760263, 0x017626B3, 0x0A00006F, 0x38042503,
 91	0x01753533, 0x2C051A63, 0x00412503, 0x00812583, 0x00000097, 0x57C080E7, 0x00058693, 0x00100593,
 92	0x2AB51063, 0x38042503, 0x38442583, 0x01753633, 0x418585B3, 0x41750533, 0x40C585B3, 0x38A42023,
 93	0x38B42223, 0x00F00513, 0x34D56063, 0x00369693, 0x00DD86B3, 0x3806A503, 0x3846A583, 0x01750BB3,
 94	0x018585B3, 0x00ABB533, 0x00A58533, 0x3976A023, 0x38A6A223, 0x01012403, 0x01412B83, 0x40100B13,
 95	0x00400C13, 0x032D1E63, 0x001A8713, 0xB99AE0E3, 0x0300006F, 0x0085B6B3, 0x24069063, 0x0085B6B3,
 96	0x41760633, 0x408585B3, 0x40D60633, 0x38B52023, 0x38C52223, 0x01012403, 0x01412B83, 0xFD2D06E3,
 97	0x410DA403, 0x0A040A63, 0x00000513, 0x00000493, 0x01000913, 0x01900993, 0x20000A13, 0x02000A93,
 98	0x00A00B13, 0x27248463, 0x009D85B3, 0x4005C583, 0x1F35FC63, 0x00349613, 0x02058A63, 0x00449693,
 99	0x00C686B3, 0x00DD86B3, 0x20068693, 0x01457A63, 0x0006C703, 0x00AD87B3, 0x00E78023, 0x00150513,
100	0xFFF58593, 0x00168693, 0xFE0592E3, 0x01457863, 0x00AD85B3, 0x01558023, 0x00150513, 0x00CD8633,
101	0x38062583, 0x38462603, 0x00A12C23, 0x01810513, 0x00000097, 0x598080E7, 0x01812503, 0x01457863,
102	0x00AD85B3, 0x01658023, 0x00150513, 0x00148493, 0x00A12C23, 0xF68498E3, 0x01810513, 0x00000097,
103	0x528080E7, 0x05D00893, 0x00000513, 0x00000593, 0x00000613, 0x00000073, 0x0000006F, 0x000034B7,
104	0xBAE48493, 0x0140006F, 0x00A00B13, 0x000034B7, 0xBAE48493, 0x01012403, 0x01412B83, 0x00C0006F,
105	0x000034B7, 0xD1C48493, 0x00000513, 0x000035B7, 0xDAC58593, 0x00500613, 0x20000693, 0x00D57A63,
106	0x0005C703, 0x00AD87B3, 0x00E78023, 0x00150513, 0xFFF60613, 0x00158593, 0xFE0612E3, 0x00A12C23,
107	0x01810513, 0x00040593, 0x000B8613, 0x00000097, 0x4DC080E7, 0x00000513, 0x00000713, 0x01812583,
108	0x20000613, 0x000036B7, 0xDB168693, 0x00C5FC63, 0x00E68733, 0x00074703, 0x00BD87B3, 0x00E78023,
109	0x00158593, 0x00100713, 0x00157793, 0x00100513, 0xFC078EE3, 0x00B12C23, 0x01810513, 0x00048593,
110	0x000B0613, 0x00000097, 0x404080E7, 0x01812503, 0x20000593, 0x00B57A63, 0x00AD8DB3, 0x00A00593,
111	0x00BD8023, 0x00150513, 0x00A12C23, 0x01810513, 0x00000097, 0x414080E7, 0x05D00893, 0x00100513,
112	0x00000593, 0x00000613, 0x00000073, 0x0000006F, 0x00A00B13, 0x000034B7, 0xBAE48493, 0xF0DFF06F,
113	0x01700B13, 0x01012403, 0x01412B83, 0x000034B7, 0xBB848493, 0xEF5FF06F, 0x01400B13, 0x000034B7,
114	0xCE848493, 0xED1FF06F, 0x000036B7, 0xDC468693, 0x01800613, 0x00000513, 0x00001097, 0xB50080E7,
115	0x00E00B13, 0x000034B7, 0xCB848493, 0xEADFF06F, 0x000034B7, 0xCFC48493, 0xE9DFF06F, 0x000036B7,
116	0xD9C68693, 0x40000613, 0x00070513, 0x000A8593, 0x00001097, 0xB18080E7, 0x00003637, 0xD8C60613,
117	0x40000593, 0x00001097, 0x880080E7, 0x00003637, 0xDB460613, 0x01000513, 0x01000593, 0x00001097,
118	0x868080E7, 0x00003637, 0xCA860613, 0x0240006F, 0x00003637, 0xD0C60613, 0x0180006F, 0x00003637,
119	0xCC860613, 0x00C0006F, 0x00003637, 0xCD860613, 0x01000593, 0x00068513, 0x00001097, 0x82C080E7,
120	0x000035B7, 0xBA858593, 0x04000893, 0x00100513, 0x00600613, 0x00000073, 0x05D00893, 0x00200513,
121	0x00000593, 0x00000613, 0x00000073, 0x0000006F, 0x00000793, 0x04060063, 0x01700693, 0x00800737,
122	0x01170713, 0x00F58833, 0x00084803, 0xFF780813, 0x0306E263, 0x01075833, 0x00187813, 0x00080C63,
123	0x00178793, 0xFEF610E3, 0x00060793, 0x00060713, 0x0440006F, 0x02C7FE63, 0x01700693, 0x00800837,
124	0x01180813, 0x00078713, 0x00E588B3, 0x0008C883, 0xFF788893, 0x0116E863, 0x011858B3, 0x0018F893,
125	0x00089A63, 0x00170713, 0xFEE610E3, 0xFC1FF06F, 0x00078713, 0x02F76663, 0x02E66463, 0x40F706B3,
126	0x00F587B3, 0x40E60633, 0x00E585B3, 0x00F52023, 0x00D52223, 0x00B52423, 0x00C52623, 0x00008067,
127	0x000036B7, 0xD2C68693, 0x00078513, 0x00070593, 0x00001097, 0x9B8080E7, 0xFE010113, 0x00112E23,
128	0x00812C23, 0x00912A23, 0x01212823, 0x01312623, 0x01412423, 0x01512223, 0x01612023, 0x000409B7,
129	0x40098993, 0x4109A403, 0x04040A63, 0x00058493, 0x00050913, 0x00000A13, 0xE8000A93, 0x01900B13,
130	0x080A8A63, 0x01498533, 0x40054503, 0x02A49263, 0x07657463, 0x01598533, 0x38050513, 0x00090593,
131	0x00048613, 0x00001097, 0xCBC080E7, 0x00050C63, 0x001A0A13, 0x018A8A93, 0xFD4414E3, 0x00000513,
132	0x00C0006F, 0x00100513, 0x000A0413, 0x00040593, 0x01C12083, 0x01812403, 0x01412483, 0x01012903,
133	0x00C12983, 0x00812A03, 0x00412A83, 0x00012B03, 0x02010113, 0x00008067, 0x000036B7, 0xD4C68693,
134	0x01800613, 0x00000513, 0x00048593, 0x00001097, 0x8DC080E7, 0x00003637, 0xD3C60613, 0x01000513,
135	0x01000593, 0x00000097, 0x640080E7, 0xFF010113, 0x00112623, 0x00812423, 0x00912223, 0x00058413,
136	0x00050493, 0x00000097, 0xEF4080E7, 0x00050693, 0x00100513, 0x00A69663, 0x00058713, 0x07C0006F,
137	0x000405B7, 0x40058593, 0x4105A703, 0x01000613, 0x00000513, 0x06C70263, 0xFE740613, 0xFE700693,
138	0x04C6FC63, 0x00F00513, 0x06E56463, 0x00371513, 0x00471613, 0x00A60533, 0x00B50533, 0x20050513,
139	0x00040613, 0x0004C683, 0x00148493, 0xFFF60613, 0x00D50023, 0x00150513, 0xFE0616E3, 0x00E58533,
140	0x40850023, 0x4105A503, 0x00150513, 0x40A5A823, 0x00100513, 0x0040006F, 0x00070593, 0x00C12083,
141	0x00812403, 0x00412483, 0x01010113, 0x00008067, 0x00003637, 0xD5C60613, 0x01000593, 0x00070513,
142	0x00000097, 0x564080E7, 0x02060C63, 0x00052683, 0x20000713, 0x000407B7, 0x40078793, 0x00E6FC63,
143	0x0005C803, 0x00D788B3, 0x00168693, 0x01088023, 0x00D52023, 0xFFF60613, 0x00158593, 0xFE0610E3,
144	0x00008067, 0x00052703, 0x20100513, 0x02A77063, 0x000405B7, 0x40058593, 0x04000893, 0x00100513,
145	0x00070613, 0x00000073, 0x00008067, 0x000036B7, 0xD6C68693, 0x20000613, 0x00000513, 0x00070593,
146	0x00000097, 0x768080E7, 0xFC010113, 0x02112E23, 0x02812C23, 0x02912A23, 0x03212823, 0x03312623,
147	0x03412423, 0x03512223, 0x03612023, 0x00058493, 0x00C5E5B3, 0x00050413, 0x02058663, 0x00060913,
148	0x00C10513, 0x01400613, 0x00000593, 0x00001097, 0xF70080E7, 0x02090E63, 0x01F95513, 0x02050E63,
149	0x0E00006F, 0x00042503, 0x1FF00593, 0x0CA5EA63, 0x000405B7, 0x40058593, 0x03000613, 0x00A585B3,
150	0x00150513, 0x00C58023, 0x00A42023, 0x0B40006F, 0x0014B513, 0x0A051663, 0x00000993, 0x01300A13,
151	0x01F10A93, 0x01300B13, 0x0D6A6063, 0x00A00613, 0x00048513, 0x00090593, 0x00000693, 0x00001097,
152	0xA54080E7, 0x00193613, 0x00151693, 0x00351713, 0x00D706B3, 0x00A4B713, 0x00198993, 0x00E67633,
153	0x40D484B3, 0x0304E693, 0x00DA8023, 0xFFFA8A93, 0xFFFB0B13, 0x00050493, 0x00058913, 0xFA0606E3,
154	0x00042503, 0x00C10593, 0x413585B3, 0x01458593, 0x20000613, 0x000406B7, 0x40068693, 0x00C57C63,
155	0x0005C703, 0x00A687B3, 0x00150513, 0x00E78023, 0x00A42023, 0xFFF98993, 0x00158593, 0xFE0990E3,
156	0x03C12083, 0x03812403, 0x03412483, 0x03012903, 0x02C12983, 0x02812A03, 0x02412A83, 0x02012B03,
157	0x04010113, 0x00008067, 0x00003637, 0xD7C60613, 0xFFF00513, 0x01400593, 0x00000097, 0x36C080E7,
158	0xFC010113, 0x02112E23, 0x02812C23, 0x02912A23, 0x03212823, 0x03312623, 0x03412423, 0x03512223,
159	0x03612023, 0x01712E23, 0x01812C23, 0x01912A23, 0x01A12823, 0x01B12623, 0x04010413, 0x00078493,
160	0x00070913, 0x00068A13, 0x00060A93, 0x00050993, 0x00852B83, 0x08059263, 0x02D00B13, 0x00100C93,
161	0x008B9513, 0x009C8CB3, 0x08055663, 0x01000513, 0x10AA7263, 0x00000513, 0x020A0263, 0x014A85B3,
162	0x000A8613, 0x00060683, 0x00160613, 0xFC06A693, 0x0016C693, 0x00D50533, 0xFEB616E3, 0x01950CB3,
163	0x00C9DD83, 0x05BCFE63, 0x007B9513, 0x0E054463, 0x419D8633, 0x001B9513, 0x01E55513, 0x00100593,
164	0x00BB9B93, 0xFD242423, 0x14A5CA63, 0x18051A63, 0x00000D13, 0x1900006F, 0x00AB9513, 0x01F55C93,
165	0xFFFC8513, 0x02B56B13, 0x008B9513, 0x009C8CB3, 0xF6054EE3, 0x00000A93, 0x00C9DD83, 0xFBBCE6E3,
166	0x0009AB83, 0x0049A983, 0x000B8513, 0x00098593, 0x000B0613, 0x000A8693, 0x000A0713, 0x00000097,
167	0x5A8080E7, 0x18051063, 0x00C9A303, 0x000B8513, 0x00090593, 0x00048613, 0x03C12083, 0x03812403,
168	0x03412483, 0x03012903, 0x02C12983, 0x02812A03, 0x02412A83, 0x02012B03, 0x01C12B83, 0x01812C03,
169	0x01412C83, 0x01012D03, 0x00C12D83, 0x04010113, 0x00030067, 0x000A8513, 0x000A0593, 0x00000097,
170	0x26C080E7, 0x01950CB3, 0x00C9DD83, 0xF7BCFAE3, 0xF19FF06F, 0x0009AB83, 0x0049AC03, 0x0089AD03,
171	0x00C9A503, 0xFCA42223, 0x9FE00537, 0x200005B7, 0x00AD7533, 0x03058593, 0x00B56533, 0x00A9A423,
172	0x000B8513, 0x000C0593, 0x000B0613, 0x000A8693, 0x000A0713, 0x00000097, 0x4F0080E7, 0x00100A13,
173	0x0C051463, 0x00000A93, 0x419D8533, 0x00010B37, 0xFFFB0B13, 0x01657CB3, 0x016AF533, 0x03957C63,
174	0x010C2603, 0x001A8A93, 0x03000593, 0x000B8513, 0x000600E7, 0xFE0502E3, 0x0900006F, 0x00200593,
175	0x00060D13, 0x04B51063, 0x01061513, 0x01155D13, 0x0340006F, 0x00CC2683, 0x000B8513, 0x00090593,
176	0x00048613, 0x000680E7, 0x06051063, 0x00000A13, 0x01A9A423, 0xFC442503, 0x00A9A623, 0x04C0006F,
177	0x00060D13, 0xFCC42223, 0x00000D93, 0x00BBDB93, 0x0009AC03, 0x0049A983, 0x00010CB7, 0xFFFC8C93,
178	0x019D7933, 0x019DF533, 0x07257063, 0x0109A603, 0x001D8D93, 0x000C0513, 0x000B8593, 0x000600E7,
179	0xFE0502E3, 0x00100A13, 0x000A0513, 0x03C12083, 0x03812403, 0x03412483, 0x03012903, 0x02C12983,
180	0x02812A03, 0x02412A83, 0x02012B03, 0x01C12B83, 0x01812C03, 0x01412C83, 0x01012D03, 0x00C12D83,
181	0x04010113, 0x00008067, 0x000C0513, 0x00098593, 0x000B0613, 0x000A8693, 0x000A0713, 0x00000097,
182	0x3C8080E7, 0x00100A13, 0xFA0510E3, 0x00C9A683, 0x000C0513, 0xFC842583, 0x00048613, 0x000680E7,
183	0xF80514E3, 0x00000493, 0xFC442503, 0x41A50533, 0x00010937, 0xFFF90913, 0x01257AB3, 0x0124F533,
184	0x01553A33, 0xF75572E3, 0x0109A603, 0x00148493, 0x000C0513, 0x000B8593, 0x000600E7, 0xFE0500E3,
185	0xF49FF06F, 0xFE010113, 0x00112E23, 0x00812C23, 0x02010413, 0xFEA42023, 0xFEB42223, 0xFE440513,
186	0x000025B7, 0x45058593, 0xFE040693, 0xFEA42423, 0xFEB42623, 0xFED42823, 0xFEB42A23, 0x00003537,
187	0xC0050513, 0xFE840593, 0x00000097, 0x008080E7, 0xFE010113, 0x00112E23, 0x00812C23, 0x02010413,
188	0xFEA42223, 0xFEB42423, 0xFE440513, 0x00100593, 0xFEA42623, 0xFEC42823, 0xFEB41A23, 0xFEC40513,
189	0xFFFFF097, 0x760080E7, 0x00050613, 0x00350513, 0xFFC57513, 0x40C50833, 0x0305F663, 0x00000513,
190	0x02058063, 0x00B605B3, 0x00060683, 0x00160613, 0xFC06A693, 0x0016C693, 0x00D50533, 0xFEB616E3,
191	0x00008067, 0x41058733, 0x00275693, 0xFC0688E3, 0x01060833, 0x00377593, 0x00C51663, 0x00000513,
192	0x0200006F, 0x00000513, 0x00060783, 0x00160613, 0xFC07A793, 0x0017C793, 0x00F50533, 0xFF0616E3,
193	0x00000793, 0x02058863, 0x80000637, 0xFFC60613, 0x00C77633, 0x00C80633, 0x00060703, 0xFFF58593,
194	0xFC072713, 0x00174713, 0x00E787B3, 0x00160613, 0xFE0594E3, 0x010105B7, 0x00FF0737, 0x10158613,
195	0x0FF70593, 0x00A78533, 0x0340006F, 0x01070833, 0x40F686B3, 0x0037F293, 0x00B8F333, 0x0088D893,
196	0x00B8F8B3, 0x006888B3, 0x01089313, 0x011308B3, 0x0108D893, 0x00A88533, 0x0A029863, 0xF40682E3,
197	0x00080713, 0x0C000813, 0x00068793, 0x0106E463, 0x0C000793, 0x00279813, 0x00000893, 0x3F087293,
198	0xFA0286E3, 0x005702B3, 0x00070313, 0x00032383, 0x00432E03, 0x00832E83, 0x00C32F03, 0xFFF3CF93,
199	0x0063D393, 0x007FDF93, 0x007FE3B3, 0xFFFE4F93, 0x006E5E13, 0x007FDF93, 0x01CFEE33, 0xFFFECF93,
200	0x006EDE93, 0x007FDF93, 0x01DFEEB3, 0xFFFF4F93, 0x006F5F13, 0x007FDF93, 0x01EFEF33, 0x00C3F3B3,
201	0x011388B3, 0x00CE73B3, 0x00CEFE33, 0x00CF7EB3, 0x007E03B3, 0x011388B3, 0x01030313, 0x011E88B3,
202	0xF85316E3, 0xF29FF06F, 0x00000693, 0x0FC7F793, 0x00279793, 0x00F707B3, 0x00229713, 0x0007A803,
203	0x00478793, 0xFFF84893, 0x00685813, 0x0078D893, 0x0108E833, 0x00C87833, 0xFFC70713, 0x00D806B3,
204	0xFC071EE3, 0x00B6F633, 0x0086D693, 0x00B6F5B3, 0x00C585B3, 0x01059613, 0x00B605B3, 0x0105D593,
205	0x00A58533, 0x00008067, 0xFE010113, 0x00112E23, 0x00812C23, 0x02010413, 0x04A67263, 0xFEA42023,
206	0xFEC42223, 0xFE040513, 0x000025B7, 0x45058593, 0xFE440613, 0xFEA42423, 0xFEB42623, 0xFEC42823,
207	0xFEB42A23, 0x00003537, 0xC6E50513, 0xFE840593, 0x00068613, 0x00000097, 0xD7C080E7, 0x04B66463,
208	0x04A5F263, 0xFEA42023, 0xFEB42223, 0xFE040513, 0x000025B7, 0x45058593, 0xFE440613, 0xFEA42423,
209	0xFEB42623, 0xFEC42823, 0xFEB42A23, 0x00003537, 0xBCF50513, 0xFE840593, 0x00068613, 0x00000097,
210	0xD34080E7, 0xFEB42023, 0xFEC42223, 0xFE040513, 0x000025B7, 0x45058593, 0xFE440613, 0xFEA42423,
211	0xFEB42623, 0xFEC42823, 0xFEB42A23, 0x00003537, 0xC3750513, 0xFE840593, 0x00068613, 0x00000097,
212	0xCF4080E7, 0xFE010113, 0x00112E23, 0x00812C23, 0x00912A23, 0x01212823, 0x01312623, 0x01412423,
213	0x02010413, 0x00070493, 0x00068913, 0x00058993, 0xFFF00593, 0x00050A13, 0x02B60063, 0x0109A683,
214	0x000A0513, 0x00060593, 0x000680E7, 0x00050663, 0x00100513, 0x03C0006F, 0x02090A63, 0x00C9A303,
215	0x000A0513, 0x00090593, 0x00048613, 0x01C12083, 0x01812403, 0x01412483, 0x01012903, 0x00C12983,
216	0x00812A03, 0x02010113, 0x00030067, 0x00000513, 0x01C12083, 0x01812403, 0x01412483, 0x01012903,
217	0x00C12983, 0x00812A03, 0x02010113, 0x00008067, 0xFC010113, 0x02112E23, 0x02812C23, 0x02912A23,
218	0x03212823, 0x03312623, 0x03412423, 0x03512223, 0x03612023, 0x01712E23, 0x01812C23, 0x04010413,
219	0x00058693, 0x00052583, 0x3E800613, 0x00003537, 0xDD450513, 0x0CC5E663, 0x00000713, 0xFD440793,
220	0xFD740813, 0xFD640893, 0xFD540293, 0xD1B71637, 0x00002E37, 0x00001EB7, 0x06400313, 0x00989F37,
221	0x75960393, 0x710E0E13, 0x47BE8E93, 0x67FF0F13, 0x00058613, 0x00060F93, 0x02763633, 0x00E784B3,
222	0x00E28933, 0x00E889B3, 0x00E80A33, 0x00D65613, 0x03C60AB3, 0x415F8AB3, 0x010A9B13, 0x012B5B13,
223	0x03DB0B33, 0x010B5B93, 0x011B5B13, 0x026B0B33, 0x7FEBFB93, 0x416A8AB3, 0x01750BB3, 0x011A9A93,
224	0x010ADA93, 0x01550AB3, 0x000BCB03, 0x001BCB83, 0x000ACC03, 0x001ACA83, 0x01648023, 0x01790023,
225	0x01898023, 0x015A0023, 0xFFC70713, 0xF9FF64E3, 0x00A70713, 0x00900793, 0x00C7EC63, 0x0680006F,
226	0x00A00713, 0x00058613, 0x00900793, 0x04B7FC63, 0x01061793, 0x00001837, 0x06400893, 0xFCE40293,
227	0x0127D793, 0x47B80813, 0x00E28333, 0x030787B3, 0x0117D793, 0x03178833, 0x41060633, 0x01161613,
228	0x01065613, 0x00C50633, 0x00064803, 0x00164603, 0xFFE70713, 0x00E282B3, 0x01028023, 0xFEC30FA3,
229	0x00078613, 0x00058463, 0x02060063, 0x00161613, 0x00C50533, 0x00154503, 0xFFF70713, 0xFCE40593,
230	0x00E585B3, 0x00A58023, 0x00A00793, 0xFCE40513, 0x40E787B3, 0x00E50733, 0x00100593, 0x00100613,
231	0x00068513, 0x00000693, 0xFFFFF097, 0x6D8080E7, 0x03C12083, 0x03812403, 0x03412483, 0x03012903,
232	0x02C12983, 0x02812A03, 0x02412A83, 0x02012B03, 0x01C12B83, 0x01812C03, 0x04010113, 0x00008067,
233	0x02060063, 0x00054683, 0x0005C703, 0x00E69E63, 0x00158593, 0xFFF60613, 0x00150513, 0xFE0614E3,
234	0x00000513, 0x00008067, 0x40E68533, 0x00008067, 0xFE010113, 0x00112E23, 0x00812C23, 0x02010413,
235	0x00068713, 0x00060693, 0x00058613, 0x00050593, 0xFE840513, 0x00000097, 0x020080E7, 0xFE842503,
236	0xFEC42583, 0x01C12083, 0x01812403, 0x02010113, 0x00008067, 0x0A068863, 0x0A071663, 0x1C060C63,
237	0x1ED67A63, 0x0106D893, 0x00C8B7B3, 0x0017C813, 0x00068793, 0x26C8F063, 0x00481813, 0x0087D293,
238	0x00C2B8B3, 0x0018C893, 0x26C2F263, 0x00389293, 0x0047D893, 0x0102E833, 0x00C8B2B3, 0x0012C293,
239	0x26C8F463, 0x00229293, 0x0027D893, 0x00586833, 0x00C8B2B3, 0x0012C293, 0x00C8E463, 0x00088793,
240	0x00129293, 0x0017D793, 0x00C7B7B3, 0x0017C793, 0x00F2E7B3, 0x00F867B3, 0x24079863, 0x01F00813,
241	0xFE080293, 0x010698B3, 0x2402DA63, 0x01071733, 0xFFF84793, 0x0016D313, 0x00F357B3, 0x00F767B3,
242	0x2400006F, 0x00000813, 0x10060C63, 0x10E60663, 0x00E637B3, 0x10079663, 0x01065893, 0x00E8B7B3,
243	0x0017C813, 0x00481813, 0x00060793, 0x14E8F863, 0x0087D893, 0x00E8B2B3, 0x0012C293, 0x00329293,
244	0x0102E833, 0x14E8FA63, 0x0047D893, 0x00E8B2B3, 0x0012C293, 0x00229293, 0x00586833, 0x14E8FC63,
245	0x0027D293, 0x00E2B8B3, 0x0018C893, 0x00189893, 0x011868B3, 0x00E2E463, 0x00028793, 0x00000813,
246	0x0017D793, 0x0016D293, 0x00E7B7B3, 0x0017C793, 0x00F8E8B3, 0x01F8C793, 0x00F2D7B3, 0x011712B3,
247	0x00F2E7B3, 0x00100293, 0x011292B3, 0x01169333, 0x0180006F, 0x00135893, 0x01F79313, 0x0017D793,
248	0x0068E333, 0x0012D293, 0x0065B8B3, 0x40F603B3, 0x411388B3, 0xFE08C0E3, 0x406585B3, 0x00E88A63,
249	0x00E8B633, 0x0102E833, 0x00060A63, 0x0180006F, 0x00D5B633, 0x0102E833, 0x00061663, 0x00088613,
250	0xFB5FF06F, 0x01052023, 0x00052223, 0x00B52423, 0x01152623, 0x00008067, 0x00D5B7B3, 0xEE078EE3,
251	0x01052023, 0x01052223, 0x00B52423, 0x00C52623, 0x00008067, 0x02D5D833, 0x02D80633, 0x40C585B3,
252	0x01052023, 0x00052223, 0x00B52423, 0x00052623, 0x00008067, 0x16D61063, 0x02C5D833, 0x02C80633,
253	0x40C585B3, 0x00100793, 0x01052023, 0x00F52223, 0x00B52423, 0x00052623, 0x00008067, 0x00088793,
254	0x0088D893, 0x00E8B2B3, 0x0012C293, 0x00329293, 0x0102E833, 0xEAE8EAE3, 0x00088793, 0x0048D893,
255	0x00E8B2B3, 0x0012C293, 0x00229293, 0x00586833, 0xEAE8E8E3, 0x00088793, 0x0028D293, 0x00E2B8B3,
256	0x0018C893, 0x00189893, 0x011868B3, 0xEAE2F6E3, 0xEADFF06F, 0x00088793, 0x00481813, 0x0088D293,
257	0x00C2B8B3, 0x0018C893, 0xDAC2E2E3, 0x00028793, 0x00389293, 0x0047D893, 0x0102E833, 0x00C8B2B3,
258	0x0012C293, 0xDAC8E0E3, 0x00088793, 0x00229293, 0x0028D893, 0x00586833, 0x00C8B2B3, 0x0012C293,
259	0xD8C8FEE3, 0xD9DFF06F, 0x02000813, 0x40F80833, 0xFE080293, 0x010698B3, 0xDA02CAE3, 0x00088793,
260	0x00000713, 0x41F2D293, 0x0112F8B3, 0x00100293, 0x01029833, 0x0180006F, 0x0018D893, 0x01F79293,
261	0x0017D793, 0x0058E8B3, 0x00185813, 0x0115B2B3, 0x40F60333, 0x405302B3, 0xFE02C0E3, 0x411585B3,
262	0x00E86733, 0x00028663, 0x00028613, 0xFCDFF06F, 0x02D5D633, 0x02D606B3, 0x40D585B3, 0x00E66833,
263	0x01052023, 0x00052223, 0x00B52423, 0x00052623, 0x00008067, 0x02D657B3, 0x0106D813, 0x02D788B3,
264	0x411608B3, 0x04081E63, 0x0105D613, 0x01089893, 0x00C8E733, 0x02D75733, 0x01059593, 0x0105D593,
265	0x02D70833, 0x41060633, 0x01061613, 0x00B665B3, 0x02D5D633, 0x01071813, 0x01075713, 0x00F767B3,
266	0x02D606B3, 0x40D585B3, 0x00C86833, 0x01052023, 0x00F52223, 0x00B52423, 0x00052623, 0x00008067,
267	0x00E88663, 0x00E8B633, 0x0080006F, 0x00D5B633, 0x00060C63, 0x00052023, 0x00F52223, 0x00B52423,
268	0x01152623, 0x00008067, 0x0016D813, 0x01F71713, 0x01F69293, 0x01076733, 0x80000837, 0x0180006F,
269	0x0012D293, 0x01F71313, 0x00175713, 0x0062E2B3, 0x00185813, 0x0055B333, 0x40E883B3, 0x40638333,
270	0xFE0340E3, 0x405585B3, 0x00C86633, 0x00030663, 0x00030893, 0xFCDFF06F, 0x02D5D733, 0x02D706B3,
271	0x40D585B3, 0x00C76833, 0x01052023, 0x00F52223, 0x00B52423, 0x00052623, 0x00008067, 0x01000693,
272	0x06D66463, 0x40A006B3, 0x0036F693, 0x00D50733, 0x00E57E63, 0x00068793, 0x00050813, 0x00B80023,
273	0xFFF78793, 0x00180813, 0xFE079AE3, 0x40D60633, 0xFFC67693, 0x00D706B3, 0x02D77063, 0x0FF5F793,
274	0x01010837, 0x10180813, 0x030787B3, 0x00F72023, 0x00470713, 0xFED76CE3, 0x00367613, 0x00C68733,
275	0x00E6EA63, 0x0200006F, 0x00050693, 0x00C50733, 0x00E57A63, 0x00B68023, 0xFFF60613, 0x00168693,
276	0xFE061AE3, 0x00008067, 0x696E6170, 0x61620A63, 0x6D612064, 0x746E756F, 0x6764656C, 0x66207265,
277	0x206C6C75, 0x6220726F, 0x6E206461, 0x16656D61, 0x63696C73, 0x6E692065, 0x20786564, 0x72617473,
278	0x61207374, 0x0DC02074, 0x74756220, 0x646E6520, 0x74612073, 0x6700C020, 0x74736575, 0x0073722E,
279	0x646E6920, 0x6F207865, 0x6F207475, 0x6F622066, 0x73646E75, 0x6874203A, 0x656C2065, 0x7369206E,
280	0x2012C020, 0x20747562, 0x20656874, 0x65646E69, 0x73692078, 0x1000C020, 0x676E6172, 0x6E652065,
281	0x6E692064, 0x20786564, 0x6F2022C0, 0x6F207475, 0x61722066, 0x2065676E, 0x20726F66, 0x63696C73,
282	0x666F2065, 0x6E656C20, 0x20687467, 0x721200C0, 0x65676E61, 0x61747320, 0x69207472, 0x7865646E,
283	0x2022C020, 0x2074756F, 0x7220666F, 0x65676E61, 0x726F6620, 0x696C7320, 0x6F206563, 0x656C2066,
284	0x6874676E, 0x0000C020, 0x00002BF7, 0x00000008, 0x000000C0, 0x0000000D, 0x6E6B6E75, 0x206E776F,
285	0x646E6573, 0x00007265, 0x00002BF7, 0x00000008, 0x000000C9, 0x00000010, 0x00002BF7, 0x00000008,
286	0x000000CE, 0x0000000D, 0x75736E69, 0x63696666, 0x746E6569, 0x6C616220, 0x65636E61, 0x6E6B6E75,
287	0x206E776F, 0x6F636361, 0x00746E75, 0x00002BF7, 0x00000008, 0x000000D6, 0x00000010, 0x6E6B6E75,
288	0x206E776F, 0x6D6D6F63, 0x00646E61, 0x00002BF7, 0x00000008, 0x0000007F, 0x00000008, 0x00002BF7,
289	0x00000008, 0x00000050, 0x00000015, 0x00002BF7, 0x00000008, 0x00000051, 0x00000030, 0x00002BF7,
290	0x00000008, 0x00000063, 0x0000000D, 0x00002BF7, 0x00000008, 0x000000B0, 0x00000013, 0x00002BF7,
291	0x00000008, 0x000000A8, 0x0000000D, 0x00002BF7, 0x00000008, 0x000000ED, 0x0000001A, 0x00002BF7,
292	0x00000008, 0x000000F2, 0x0000002B, 0x656E696C, 0x00203A20, 0x00002BF7, 0x00000008, 0x00000103,
293	0x00000011, 0x00002BF7, 0x00000008, 0x00000104, 0x0000001F, 0x31303030, 0x33303230, 0x35303430,
294	0x37303630, 0x39303830, 0x31313031, 0x33313231, 0x35313431, 0x37313631, 0x39313831, 0x31323032,
295	0x33323232, 0x35323432, 0x37323632, 0x39323832, 0x31333033, 0x33333233, 0x35333433, 0x37333633,
296	0x39333833, 0x31343034, 0x33343234, 0x35343434, 0x37343634, 0x39343834, 0x31353035, 0x33353235,
297	0x35353435, 0x37353635, 0x39353835, 0x31363036, 0x33363236, 0x35363436, 0x37363636, 0x39363836,
298	0x31373037, 0x33373237, 0x35373437, 0x37373637, 0x39373837, 0x31383038, 0x33383238, 0x35383438,
299	0x37383638, 0x39383838, 0x31393039, 0x33393239, 0x35393439, 0x37393639, 0x39393839,
300}
301
302// GuestLedger returns the flat text image of the compiled Rust ledger, ready
303// for [NewMachine] at [DefaultEntry].
304func GuestLedger() []byte { return Image(guestLedger) }
305
306// Image serializes instruction words little-endian, which is what RV32 is.
307// Exported because anything assembling a program has to do exactly this, and
308// getting the byte order wrong produces a decoder error a long way from the
309// mistake.
310func Image(words []uint32) []byte {
311	b := make([]byte, 0, len(words)*4)
312	for _, w := range words {
313		b = append(b, byte(w), byte(w>>8), byte(w>>16), byte(w>>24))
314	}
315	return b
316}