如何将数字转换为二进制进行汇编
从根本上来说,该代码正在丢弃有价值的信息。在进行确定操作码的工作后,该确定仅用于发出操作码本身,但不用于通知如何处理操作数。
通常,指令集架构具有格式,每种格式都有一定数量和类型的允许操作数 - 每条指令将采用其中一种格式的形式。
所以,你能做的是:
if ( opcode == "ADD" ) { emit ( "0000" ); format = Three_operand; } break;
...
switch ( format ) {
case Three_operand: ... break;
}
if ( opcode == "ADD" ) { emit ( "0000" ); handle3operands (); } break;
// nothing left to do here as common code is invoked by function call.