ARM Assembly benchmarking platform
This is a prototype of a website for testing and benchmarking small ARM assembly code. It is designed to allow students to submit their implementation of some functions (such as the ones asked in practical classes) in assembly. Then, this code is tested in an emulator against multiple inputs and some statistics are extracted (number of instructions, number of jumps taken, number of memory access).
Testing framework
Unfortunately, it is not that easy to "test" assembly code for correctness...
Current ideas
Description language of the tests + rules of writing asked to the students. For instance:
- main program must be named
_start
and is exported - the array to sort must be located at a label
tableau
- the last jump is expected to be an extern
_exit
function
Then it is relatively easy to run the program (with maximum number of instructions) until our specified _exit
address, and inspect either memory and/or registers to check our testcase.
Architecture overview
For now, this is a work in project and will probably not be finished before next year... It consists in several parts:
- web platform: handles submission and present the results
- simulator: currently expected to be based on epater, which is easily customizable (CPU-only emulator, no SoC, I/O and cache currently)
- assembling and linking: for now, building relies on GNU toolchain
- compiling must be isolated as much as possible on the server, as many security issues may be exploited using a C compiler (and probably also using the GNU assembler)!