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