Sun 25 Mar 2018 16:00 - 16:30 - Session 3: Following Instructions Chair(s): Carl Waldspurger

Software that emulates a CPU has many applications, but is difficult to implement correctly and requires extensive testing. Since a large number of test cases are required for full coverage, it is important that the tests execute efficiently. We explore techniques for combining many instruction tests into one program to amortize overheads such as booting an emulator. To ensure the results of each test are reflected in a final result, we use the outputs of one instruction test as an input to the next, and adopt the “Feistel network” construction from cryptography so that each step is invertible. We evaluate this approach by applying it to PokeEMU, a tool that generates emulator tests using symbolic execution. The combined tests run much faster, but still reveal most of the same behavior differences as when run individually.

Sun 25 Mar
Times are displayed in time zone: Eastern Time (US & Canada) change

16:00 - 17:00: Session 3: Following InstructionsResearch Papers
Chair(s): Carl WaldspurgerCarl Waldspurger Consulting
16:00 - 16:30
Fast PokeEMU: Scaling Generated Instruction Tests Using Aggregation and State Chaining
Research Papers
Qiuchen YanUniversity of Minnesota, Stephen McCamantUniversity of Minnesota
16:30 - 17:00
An Analysis of x86-64 Inline Assembly in C Programs
Research Papers
Manuel RiggerJohannes Kepler University Linz, Stefan MarrUniversity of Kent, Stephen KellUniversity of Cambridge, David LeopoldsederJohannes Kepler University Linz, Hanspeter MössenböckJKU Linz, Austria
Link to publication Pre-print Media Attached