Mercurial > repos > blastem
comparison gen_x86.c @ 146:5416a5c4628e
Implement most of the "X" instructions
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 31 Dec 2012 20:09:09 -0800 |
parents | dc5fc3adf705 |
children | 6b593ea0ed90 |
comparison
equal
deleted
inserted
replaced
145:15b8dce19cf4 | 146:5416a5c4628e |
---|---|
652 uint8_t * add_rdisp8r(uint8_t * out, uint8_t src_base, int8_t disp, uint8_t dst, uint8_t size) | 652 uint8_t * add_rdisp8r(uint8_t * out, uint8_t src_base, int8_t disp, uint8_t dst, uint8_t size) |
653 { | 653 { |
654 return x86_rrdisp8_sizedir(out, OP_ADD, dst, src_base, disp, size, BIT_DIR); | 654 return x86_rrdisp8_sizedir(out, OP_ADD, dst, src_base, disp, size, BIT_DIR); |
655 } | 655 } |
656 | 656 |
657 uint8_t * adc_rr(uint8_t * out, uint8_t src, uint8_t dst, uint8_t size) | |
658 { | |
659 return x86_rr_sizedir(out, OP_ADC, src, dst, size); | |
660 } | |
661 | |
662 uint8_t * adc_ir(uint8_t * out, int32_t val, uint8_t dst, uint8_t size) | |
663 { | |
664 return x86_ir(out, OP_IMMED_ARITH, OP_EX_ADCI, OP_ADC, val, dst, size); | |
665 } | |
666 | |
667 uint8_t * adc_irdisp8(uint8_t * out, int32_t val, uint8_t dst_base, int8_t disp, uint8_t size) | |
668 { | |
669 return x86_irdisp8(out, OP_IMMED_ARITH, OP_EX_ADCI, val, dst_base, disp, size); | |
670 } | |
671 | |
672 uint8_t * adc_rrdisp8(uint8_t * out, uint8_t src, uint8_t dst_base, int8_t disp, uint8_t size) | |
673 { | |
674 return x86_rrdisp8_sizedir(out, OP_ADC, src, dst_base, disp, size, 0); | |
675 } | |
676 | |
677 uint8_t * adc_rdisp8r(uint8_t * out, uint8_t src_base, int8_t disp, uint8_t dst, uint8_t size) | |
678 { | |
679 return x86_rrdisp8_sizedir(out, OP_ADC, dst, src_base, disp, size, BIT_DIR); | |
680 } | |
681 | |
657 uint8_t * or_rr(uint8_t * out, uint8_t src, uint8_t dst, uint8_t size) | 682 uint8_t * or_rr(uint8_t * out, uint8_t src, uint8_t dst, uint8_t size) |
658 { | 683 { |
659 return x86_rr_sizedir(out, OP_OR, src, dst, size); | 684 return x86_rr_sizedir(out, OP_OR, src, dst, size); |
660 } | 685 } |
661 uint8_t * or_ir(uint8_t * out, int32_t val, uint8_t dst, uint8_t size) | 686 uint8_t * or_ir(uint8_t * out, int32_t val, uint8_t dst, uint8_t size) |
749 } | 774 } |
750 | 775 |
751 uint8_t * sub_rdisp8r(uint8_t * out, uint8_t src_base, int8_t disp, uint8_t dst, uint8_t size) | 776 uint8_t * sub_rdisp8r(uint8_t * out, uint8_t src_base, int8_t disp, uint8_t dst, uint8_t size) |
752 { | 777 { |
753 return x86_rrdisp8_sizedir(out, OP_SUB, dst, src_base, disp, size, BIT_DIR); | 778 return x86_rrdisp8_sizedir(out, OP_SUB, dst, src_base, disp, size, BIT_DIR); |
779 } | |
780 | |
781 uint8_t * sbb_rr(uint8_t * out, uint8_t src, uint8_t dst, uint8_t size) | |
782 { | |
783 return x86_rr_sizedir(out, OP_SBB, src, dst, size); | |
784 } | |
785 | |
786 uint8_t * sbb_ir(uint8_t * out, int32_t val, uint8_t dst, uint8_t size) | |
787 { | |
788 return x86_ir(out, OP_IMMED_ARITH, OP_EX_SBBI, OP_SBB, val, dst, size); | |
789 } | |
790 | |
791 uint8_t * sbb_irdisp8(uint8_t * out, int32_t val, uint8_t dst_base, int8_t disp, uint8_t size) | |
792 { | |
793 return x86_irdisp8(out, OP_IMMED_ARITH, OP_EX_SBBI, val, dst_base, disp, size); | |
794 } | |
795 | |
796 uint8_t * sbb_rrdisp8(uint8_t * out, uint8_t src, uint8_t dst_base, int8_t disp, uint8_t size) | |
797 { | |
798 return x86_rrdisp8_sizedir(out, OP_SBB, src, dst_base, disp, size, 0); | |
799 } | |
800 | |
801 uint8_t * sbb_rdisp8r(uint8_t * out, uint8_t src_base, int8_t disp, uint8_t dst, uint8_t size) | |
802 { | |
803 return x86_rrdisp8_sizedir(out, OP_SBB, dst, src_base, disp, size, BIT_DIR); | |
754 } | 804 } |
755 | 805 |
756 uint8_t * cmp_rr(uint8_t * out, uint8_t src, uint8_t dst, uint8_t size) | 806 uint8_t * cmp_rr(uint8_t * out, uint8_t src, uint8_t dst, uint8_t size) |
757 { | 807 { |
758 return x86_rr_sizedir(out, OP_CMP, src, dst, size); | 808 return x86_rr_sizedir(out, OP_CMP, src, dst, size); |