```lua
machine_config ::= {
rom ::= rom_config,
ram ::= ram_config,
flash_drive ::= {
[1] ::= memory_range_config, -- flash drive 0
[2] ::= memory_range_config, -- flash drive 1
...
[n] ::= memory_range_config -- flash drive n <= 7
},
processor ::= processor_config,
clint ::= clint_config,
htif ::= htif_config,
rollup ::= rollup_config,
}
```
```lua
rom_config ::= {
bootargs ::= string,
image_filename ::= string
}
```
```lua
ram_config ::= {
length ::= number,
image_filename ::= string
}
```
```lua
htif_config ::= {
fromhost ::= number,
tohost ::= number,
console_putchar ::= boolean,
yield_manual ::= boolean,
yield_automatic ::= boolean
}
```
```lua
clint_config ::= {
mtimecmp ::= number,
}
```
```lua
rollup_config ::= {
rx_buffer := memory_range_config,
tx_buffer := memory_range_config,
input_metadata := memory_range_config,
voucher_hashes := memory_range_config,
notice_hashes := memory_range_config
}
```
```lua
processor_config ::= {
x = {
[1] ::= number, -- register x1
[2] ::= number, -- register x2
...
[31] ::= number, -- register x31
},
pc ::= number,
mvendorid ::= number,
marchid ::= number,
mimpid ::= number,
mcycle ::= number,
minstret ::= number,
mstatus ::= number,
mtvec ::= number,
mscratch ::= number,
mepc ::= number,
mcause ::= number,
mtval ::= number,
misa ::= number,
mie ::= number,
mip ::= number,
medeleg ::= number,
mideleg ::= number,
mcounteren ::= number,
stvec ::= number,
sscratch ::= number,
sepc ::= number,
scause ::= number,
stval ::= number,
satp ::= number,
scounteren ::= number,
ilrsc ::= number,
iflags ::= number
},
```
```lua
memory_range_config ::= {
start ::= number,
length ::= number,
image_filename ::= string,
shared ::= boolean
}
```