comparison lwasm/pseudo.c @ 387:a741d2e4869f

Various bugfixes; fixed lwobjdump to display symbols with unprintable characters more sensibly; start of a (nonfunctional for now) testing framework
author lost@l-w.ca
date Wed, 14 Jul 2010 20:15:23 -0600
parents af5f2c51db76
children fbb7bfed8076
comparison
equal deleted inserted replaced
386:af5f2c51db76 387:a741d2e4869f
655 as -> skipcount++; 655 as -> skipcount++;
656 skip_operand(p); 656 skip_operand(p);
657 return; 657 return;
658 } 658 }
659 659
660 e = lwasm_parse_expr(as, p); 660 e = lwasm_parse_cond(as, p);
661 if (!e) 661 if (e && lw_expr_intval(e) != 0)
662 {
663 lwasm_register_error(as, l, "Bad expression");
664 return;
665 }
666 if (!lw_expr_istype(e, lw_expr_type_int))
667 {
668 lwasm_register_error(as, l, "Conditions must be constant on pass 1");
669 return;
670 }
671 if (lw_expr_intval(e) != 0)
672 { 662 {
673 as -> skipcond = 1; 663 as -> skipcond = 1;
674 as -> skipcount = 1; 664 as -> skipcount = 1;
675 } 665 }
676 } 666 }
686 as -> skipcount++; 676 as -> skipcount++;
687 skip_operand(p); 677 skip_operand(p);
688 return; 678 return;
689 } 679 }
690 680
691 e = lwasm_parse_expr(as, p); 681 e = lwasm_parse_cond(as, p);
692 if (!e) 682 if (e && lw_expr_intval(e) == 0)
693 {
694 lwasm_register_error(as, l, "Bad expression");
695 return;
696 }
697 if (!lw_expr_istype(e, lw_expr_type_int))
698 {
699 lwasm_register_error(as, l, "Conditions must be constant on pass 1");
700 return;
701 }
702 if (lw_expr_intval(e) == 0)
703 { 683 {
704 as -> skipcond = 1; 684 as -> skipcond = 1;
705 as -> skipcount = 1; 685 as -> skipcount = 1;
706 } 686 }
707 } 687 }
718 as -> skipcount++; 698 as -> skipcount++;
719 skip_operand(p); 699 skip_operand(p);
720 return; 700 return;
721 } 701 }
722 702
723 e = lwasm_parse_expr(as, p); 703 e = lwasm_parse_cond(as, p);
724 if (!e) 704 if (e && lw_expr_intval(e) <= 0)
725 {
726 lwasm_register_error(as, l, "Bad expression");
727 return;
728 }
729 if (!lw_expr_istype(e, lw_expr_type_int))
730 {
731 lwasm_register_error(as, l, "Conditions must be constant on pass 1");
732 return;
733 }
734 if (lw_expr_intval(e) <= 0)
735 { 705 {
736 as -> skipcond = 1; 706 as -> skipcond = 1;
737 as -> skipcount = 1; 707 as -> skipcount = 1;
738 } 708 }
739 } 709 }
749 as -> skipcount++; 719 as -> skipcount++;
750 skip_operand(p); 720 skip_operand(p);
751 return; 721 return;
752 } 722 }
753 723
754 e = lwasm_parse_expr(as, p); 724 e = lwasm_parse_cond(as, p);
755 if (!e) 725 if (e && lw_expr_intval(e) < 0)
756 {
757 lwasm_register_error(as, l, "Bad expression");
758 return;
759 }
760 if (!lw_expr_istype(e, lw_expr_type_int))
761 {
762 lwasm_register_error(as, l, "Conditions must be constant on pass 1");
763 return;
764 }
765 if (lw_expr_intval(e) < 0)
766 { 726 {
767 as -> skipcond = 1; 727 as -> skipcond = 1;
768 as -> skipcount = 1; 728 as -> skipcount = 1;
769 } 729 }
770 } 730 }
780 as -> skipcount++; 740 as -> skipcount++;
781 skip_operand(p); 741 skip_operand(p);
782 return; 742 return;
783 } 743 }
784 744
785 e = lwasm_parse_expr(as, p); 745 e = lwasm_parse_cond(as, p);
786 if (!e) 746 if (e && lw_expr_intval(e) >= 0)
787 {
788 lwasm_register_error(as, l, "Bad expression");
789 return;
790 }
791 if (!lw_expr_istype(e, lw_expr_type_int))
792 {
793 lwasm_register_error(as, l, "Conditions must be constant on pass 1");
794 return;
795 }
796 if (lw_expr_intval(e) >= 0)
797 { 747 {
798 as -> skipcond = 1; 748 as -> skipcond = 1;
799 as -> skipcount = 1; 749 as -> skipcount = 1;
800 } 750 }
801 } 751 }
811 as -> skipcount++; 761 as -> skipcount++;
812 skip_operand(p); 762 skip_operand(p);
813 return; 763 return;
814 } 764 }
815 765
816 e = lwasm_parse_expr(as, p); 766 e = lwasm_parse_cond(as, p);
817 if (!e) 767 if (e && lw_expr_intval(e) > 0)
818 {
819 lwasm_register_error(as, l, "Bad expression");
820 return;
821 }
822 if (!lw_expr_istype(e, lw_expr_type_int))
823 {
824 lwasm_register_error(as, l, "Conditions must be constant on pass 1");
825 return;
826 }
827 if (lw_expr_intval(e) > 0)
828 { 768 {
829 as -> skipcond = 1; 769 as -> skipcond = 1;
830 as -> skipcount = 1; 770 as -> skipcount = 1;
831 } 771 }
832 } 772 }