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);