Lines 721-726
i386_intel_operand (char *operand_string, int got_a_float)
Link Here
|
721 |
if (i.mem_operands |
721 |
if (i.mem_operands |
722 |
>= 2 - !current_templates->start->opcode_modifier.isstring) |
722 |
>= 2 - !current_templates->start->opcode_modifier.isstring) |
723 |
{ |
723 |
{ |
|
|
724 |
/* Handle |
725 |
|
726 |
call 0x9090,0x90909090 |
727 |
lcall 0x9090,0x90909090 |
728 |
jmp 0x9090,0x90909090 |
729 |
ljmp 0x9090,0x90909090 |
730 |
*/ |
731 |
|
732 |
if ((current_templates->start->opcode_modifier.jumpintersegment |
733 |
|| current_templates->start->opcode_modifier.jumpdword |
734 |
|| current_templates->start->opcode_modifier.jump) |
735 |
&& this_operand == 1 |
736 |
&& intel_state.seg == NULL |
737 |
&& i.mem_operands == 1 |
738 |
&& i.disp_operands == 1 |
739 |
&& intel_state.op_modifier == O_absent) |
740 |
{ |
741 |
i386_operand_type types; |
742 |
|
743 |
/* Try to process the first operand as immediate, */ |
744 |
this_operand = 0; |
745 |
operand_type_set (&types, ~0); |
746 |
if (i386_finalize_immediate (exp_seg, i.op[0].imms, |
747 |
types, operand_string)) |
748 |
{ |
749 |
this_operand = 1; |
750 |
expP = &im_expressions[0]; |
751 |
i.op[this_operand].imms = expP; |
752 |
*expP = exp; |
753 |
|
754 |
/* Try to process the second operand as immediate, */ |
755 |
if (i386_finalize_immediate (exp_seg, expP, types, |
756 |
operand_string)) |
757 |
{ |
758 |
i.mem_operands = 0; |
759 |
i.disp_operands = 0; |
760 |
i.imm_operands = 2; |
761 |
i.types[0].bitfield.mem = 0; |
762 |
i.types[0].bitfield.disp16 = 0; |
763 |
i.types[0].bitfield.disp32 = 0; |
764 |
i.types[0].bitfield.disp32s = 0; |
765 |
return 1; |
766 |
} |
767 |
} |
768 |
} |
769 |
|
724 |
as_bad (_("too many memory references for `%s'"), |
770 |
as_bad (_("too many memory references for `%s'"), |
725 |
current_templates->start->name); |
771 |
current_templates->start->name); |
726 |
return 0; |
772 |
return 0; |