    struct unpacked_s i = decode(word);

    /* Execute it. */
    switch (i.opcode) {
    case RB_HALT:
	free(mem);
	return RB_SUCCESS;
	break;
    case RB_MOVE: {
	/* Move is special because it has one source instead of two
	 * operands. */
	rabbitw src = i.modes.immediate   ? fetch_immediate()  : regs[i.regc];
	rabbitw *dst = i.modes.regb_deref ? &amp;mem[regs[i.regb]] : &amp;regs[i.regb];
	*dst = i.modes.regc_deref ? mem[src] : src;
	break;
    }
    case RB_ADD:
	abc = getabc(regs, mem, i);
	*abc.dst =