>>1
とりあえず、if/elseの化け物みたいなの止めろ
switchのが早くなるが、
バイトコードやりたいなら↓みたいな、関数ポインタ使ってランダムアクセスさせたほうが早い
typedef void(*tp10e_operator_t)(unsigned char *mem, REGS *regs);
static tp10e_operator_t operator_table[sizeof char] = {
/*NOP*/tp10e_nop,
/*MOV*/tp10e_mov,
/*ADD*/tp10e_add,
//(ry
};

getargs_one/getargs_twoはswitchに切り替えろ。
getargs_one/getargs_twoがおそらく速度のボトルネックになるから最適化の余地はあるな。
ARGS_ONE/ARGS_TWOは.hで公開する必要ないし構造体である必要もない気がするから、いまその構造体のメンバつかってるのはローカル変数でもええやろ


あと、こんだけかけるなら言う必要ねーかも試練が、unsigned charとかはtypedefしたほうが楽じゃね?ってかバイトコードなら変数が何ビットなのか固定させとかんといかんと思う。
あと、used1とused2ってなに?これローカル変数でよくね?速度だすならグローバル変数より若干速くなるような気がするがc言語5年ぶりだから覚えてない。
あと、このソース(.c)の外部に公開しない関数ならstaticつけたほうが無難かな。
.hってインクルードガードしなくてええの?

一応ぱっと見こんなところだとおもう。