Definition
An assembly program test input is a test input for processor fuzzing that is expressed as an assembly program conforming to the target instruction set architecture (ISA). In the ProcessorFuzz workflow, the seed corpus is populated by generating random test inputs in this form.
Role in ProcessorFuzz
ProcessorFuzz uses assembly program test inputs as the units that are selected from the seed corpus, mutated, and evaluated. Its mutations include removing instructions, appending instructions, and replacing instructions in a chosen input.
After mutation, ProcessorFuzz first runs an ISA simulator on a mutated assembly program test input. The ISA simulator produces an extended ISA trace log that includes Control and Status Register (CSR) values for each executed instruction. ProcessorFuzz then extracts CSR transitions from that trace and checks them against a Transition Map of previously observed transitions.
If a mutated input triggers at least one previously unseen CSR transition, ProcessorFuzz classifies it as interesting and adds it back to the seed corpus for future mutations. If it does not trigger a new transition, the input is discarded. ProcessorFuzz runs RTL simulation only for interesting mutated inputs, reducing time spent on repetitive inputs.
Why this representation matters
Coverage-guided fuzzing repeatedly runs a program under test with many random inputs and uses runtime coverage feedback to decide whether an input is interesting. When this idea is adapted to processors, the target hardware design is not directly executable on the host machine; it must be evaluated through simulation, typically RTL simulation. ProcessorFuzz therefore uses faster ISA simulation to screen assembly program test inputs before invoking RTL simulation on the target processor design.