One can use the Escardó-Oliva functional to write an assembler; it handles the "backtracking." On X86 the encoding of a jump instruction can vary depending on the distance of the jump... which in turn depends on the size of the encoding! So you need more than just the tardis monad