@@ -115,8 +115,8 @@ local mnemonic_info = {
115115 [ " jy" ] = { traits = " J STE " , code = 0x00010000 },
116116 [ " ld" ] = { traits = " PSTE " , code = 0x00020000 },
117117 [ " exh" ] = { traits = " FPSTD " , code = 0x00030000 },
118- [ " sub" ] = { traits = " FPSTDX " , code = 0x00040000 , companion_code_xor = 0x00020000 , companion_add_one = true },
119- [ " sbb" ] = { traits = " FPSTDX " , code = 0x00050000 , companion_code_xor = 0x00020000 , companion_add_one = true },
118+ [ " sub" ] = { traits = " FPSTDX " , code = 0x00040000 , companion_code_xor = 0x00020000 , companion_add_one = true },
119+ [ " sbb" ] = { traits = " FPSTDX " , code = 0x00050000 , companion_code_xor = 0x00020000 , companion_add_one = false },
120120 [ " add" ] = { traits = " FPSTD " , code = 0x00060000 },
121121 [ " adc" ] = { traits = " FPSTD " , code = 0x00070000 },
122122 [ " or" ] = { traits = " FPSTD " , code = 0x00090000 },
@@ -206,9 +206,11 @@ function mnemonic_desc.emit(mnemonic_token, parameters)
206206 if info .traits :find (" X" ) then
207207 imm_index = 2
208208 end
209+ local imm_count = 0
209210 for ix_operand = 1 , # operands do
210211 local operand = operands [ix_operand ]
211212 if operand and operand .type == " imm" then
213+ imm_count = imm_count + 1
212214 local trunc_bits = 16
213215 if info .traits :find (" H" ) then
214216 trunc_bits = 4
@@ -253,6 +255,9 @@ function mnemonic_desc.emit(mnemonic_token, parameters)
253255 end
254256
255257 local final_code = nop :clone ():merge (code , 0 )
258+ if imm_count > 1 then
259+ final_code = nil
260+ end
256261 if final_code and info .traits :find (" P" ) then
257262 if named_ops [1 ] then
258263 final_code = final_code :merge (named_ops [1 ].value , 25 )
0 commit comments