It's a detail, but shouldn't simple_interrupter.c be called simple_interpreter.c instead?
Otherwise, I haven't spent so much time looking at it but the code looks pretty readable. The number of LOCs is artificially high because of the C coding style, but the complexity is low.