@@ -628,9 +628,8 @@ Error AsmInsn::emitTemporaryReal(const float80_t &val80) {
628628
629629#endif
630630
631- Error AsmI8086::defineConstant (StrScanner &scan, Insn &_insn , uint16_t extra) {
631+ Error AsmI8086::defineConstant (StrScanner &scan, AsmInsn &insn , uint16_t extra) {
632632 const auto type = static_cast <I8087Type>(extra);
633- AsmInsn insn (_insn);
634633 ErrorAt error;
635634 do {
636635 scan.skipSpaces ();
@@ -639,7 +638,7 @@ Error AsmI8086::defineConstant(StrScanner &scan, Insn &_insn, uint16_t extra) {
639638 auto end = scan;
640639 const auto err = isString (end, strErr);
641640 if (err == OK) {
642- generateString (scan, end, _insn , DATA_LONG, strErr);
641+ generateString (scan, end, insn. insnBase () , DATA_LONG, strErr);
643642 if (error.setErrorIf (strErr) == NO_MEMORY)
644643 break ;
645644 continue ;
@@ -715,32 +714,32 @@ Error AsmI8086::defineConstant(StrScanner &scan, Insn &_insn, uint16_t extra) {
715714 if (error.setErrorIf (exprErr) == NO_MEMORY)
716715 break ;
717716 } while (scan.skipSpaces ().expect (' ,' ));
718- return _insn .setError (error);
717+ return insn. insnBase () .setError (error);
719718}
720719
721- Error AsmI8086::encodeRepeatInsn (StrScanner &scan, Insn &_insn , uint16_t opc) {
720+ Error AsmI8086::encodeRepeatInsn (StrScanner &scan, AsmInsn &insn , uint16_t opc) {
722721 if (endOfLine (scan))
723722 return UNKNOWN_DIRECTIVE;
724723 if ((opc == 0x64 || opc == 0x65 ) && _cpuSpec.cpu != V30)
725724 return UNKNOWN_DIRECTIVE;
726725
727- AsmInsn insn (_insn);
728726 insn.setRepeat (opc);
729727 StrScanner symbol;
730728 _parser.readInstruction (scan, symbol);
731729 insn.nameBuffer ().reset ().text (symbol);
732730 return encodeImpl (scan.skipSpaces (), insn);
733731}
734732
735- Error AsmI8086::setCoprocessor (StrScanner &scan, Insn &insn, uint16_t ) {
733+ Error AsmI8086::setCoprocessor (StrScanner &scan, AsmInsn &insn, uint16_t ) {
736734 const auto at = scan;
737735 const auto error = _opt_fpu.set (scan);
738- return error ? insn.setErrorIf (at, error) : OK;
736+ return error ? insn.insnBase (). setErrorIf (at, error) : OK;
739737}
740738
741- Error AsmI8086::processPseudo (StrScanner &scan, Insn &insn) {
742- const auto *p = PSEUDOS_I8086.search (insn);
743- return p ? p->invoke (this , scan, insn) : Assembler::processPseudo (scan, insn);
739+ Error AsmI8086::processPseudo (StrScanner &scan, Insn &_insn) {
740+ AsmInsn insn (_insn);
741+ const auto *p = PSEUDOS_I8086.search (insn.name ());
742+ return p ? p->invoke (this , scan, insn) : Assembler::processPseudo (scan, _insn);
744743}
745744
746745void AsmInsn::prepairModReg () {
0 commit comments