Subversion Repositories Kolibri OS

Rev

Rev 7597 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 7597 Rev 7667
Line 664... Line 664...
664
    variables:  LISTS.LIST;
664
    variables:  LISTS.LIST;
665
    lvar, rvar: CODE.LOCALVAR;
665
    lvar, rvar: CODE.LOCALVAR;
666
    reg:        INTEGER;
666
    reg:        INTEGER;
667
    max:        INTEGER;
667
    max:        INTEGER;
668
    loop:       INTEGER;
668
    loop:       INTEGER;
-
 
669
    param2:     INTEGER;
Line 669... Line 670...
669
 
670
 
670
BEGIN
671
BEGIN
671
    loop := 1;
672
    loop := 1;
672
    variables := cmd.variables;
673
    variables := cmd.variables;
Line 728... Line 729...
728
         CODE.opLEAVEF:
729
         CODE.opLEAVEF:
729
            leave := TRUE
730
            leave := TRUE
Line 730... Line 731...
730
 
731
 
731
        |CODE.opCALL, CODE.opCALLP, CODE.opCALLI,
732
        |CODE.opCALL, CODE.opCALLP, CODE.opCALLI,
732
         CODE.opWIN64CALL, CODE.opWIN64CALLP, CODE.opWIN64CALLI,
733
         CODE.opWIN64CALL, CODE.opWIN64CALLP, CODE.opWIN64CALLI,
-
 
734
         CODE.opSYSVCALL, CODE.opSYSVCALLP, CODE.opSYSVCALLI,
-
 
735
 
-
 
736
         CODE.opSAVES, CODE.opRSET, CODE.opRSETR,
-
 
737
         CODE.opRSETL, CODE.opRSET1,
-
 
738
         CODE.opEQS .. CODE.opGES,
-
 
739
         CODE.opEQS2 .. CODE.opGES2,
-
 
740
         CODE.opEQSW .. CODE.opGESW,
-
 
741
         CODE.opEQSW2 .. CODE.opGESW2,
-
 
742
         CODE.opCOPY, CODE.opMOVE, CODE.opCOPYA,
-
 
743
         CODE.opCOPYS, CODE.opCOPYS2, CODE.opROT,
-
 
744
         CODE.opNEW, CODE.opDISP, CODE.opISREC,
-
 
745
         CODE.opIS, CODE.opTYPEGR, CODE.opTYPEGP,
-
 
746
         CODE.opCASET, CODE.opDIV,
-
 
747
         CODE.opDIVL, CODE.opMOD,
-
 
748
         CODE.opMODL, CODE.opLENGTH, CODE.opLENGTHW:
-
 
749
            leaf := FALSE
-
 
750
 
-
 
751
        |CODE.opDIVR, CODE.opMODR:
-
 
752
            param2 := cur.param2;
-
 
753
            IF param2 >= 1 THEN
-
 
754
                param2 := X86.log2(param2)
-
 
755
            ELSIF param2 <= -1 THEN
-
 
756
                param2 := X86.log2(-param2)
-
 
757
            ELSE
-
 
758
                param2 := -1
-
 
759
            END;
733
         CODE.opSYSVCALL, CODE.opSYSVCALLP, CODE.opSYSVCALLI:
760
            IF param2 < 0 THEN
-
 
761
                leaf := FALSE
Line 734... Line 762...
734
            leaf := FALSE
762
            END
Line 735... Line 763...
735
 
763
 
736
        ELSE
764
        ELSE
Line 1425... Line 1453...
1425
            ELSE
1453
            ELSE
1426
                ASSERT(R.top + 1 <= n);
1454
                ASSERT(R.top + 1 <= n);
1427
                PushAll(n)
1455
                PushAll(n)
1428
            END
1456
            END   
Line -... Line 1457...
-
 
1457
            
-
 
1458
        |CODE.opACC:
-
 
1459
            IF (R.top # 0) OR (R.stk[0] # rax) THEN
-
 
1460
                PushAll(0);
-
 
1461
                GetRegA;
-
 
1462
                pop(rax);
-
 
1463
                DEC(R.pushed)
-
 
1464
            END
1429
 
1465
 
1430
        |CODE.opJNZ:
1466
        |CODE.opJNZ:
1431
            UnOp(reg1);
1467
            UnOp(reg1);
1432
            test(reg1);
1468
            test(reg1);