Rev 8859 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 8859 | Rev 9847 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | (* |
1 | (* |
2 | BSD 2-Clause License |
2 | BSD 2-Clause License |
Line 3... | Line 3... | ||
3 | 3 | ||
4 | Copyright (c) 2018-2021, Anton Krotov |
4 | Copyright (c) 2018-2022, Anton Krotov |
5 | All rights reserved. |
5 | All rights reserved. |
Line 6... | Line 6... | ||
6 | *) |
6 | *) |
Line 952... | Line 952... | ||
952 | END; |
952 | END; |
Line 953... | Line 953... | ||
953 | 953 | ||
954 | PExpression(parser, e); |
954 | PExpression(parser, e); |
955 | PARS.check(isInt(e), pos, 66); |
955 | PARS.check(isInt(e), pos, 66); |
956 | IF e.obj = eCONST THEN |
956 | IF e.obj = eCONST THEN |
957 | LoadConst(e) |
957 | IL.AddCmd(IL.opCOPY, ARITH.Int(e.value)) |
958 | END; |
958 | ELSE |
- | 959 | IL.AddCmd0(IL.opMOVE) |
|
Line 959... | Line 960... | ||
959 | IL.AddCmd0(IL.opMOVE) |
960 | END |
960 | 961 | ||
961 | |PROG.sysCOPY: |
962 | |PROG.sysCOPY: |
962 | FOR i := 1 TO 2 DO |
963 | FOR i := 1 TO 2 DO |
Line 972... | Line 973... | ||
972 | END; |
973 | END; |
Line 973... | Line 974... | ||
973 | 974 | ||
974 | PExpression(parser, e); |
975 | PExpression(parser, e); |
975 | PARS.check(isInt(e), pos, 66); |
976 | PARS.check(isInt(e), pos, 66); |
976 | IF e.obj = eCONST THEN |
977 | IF e.obj = eCONST THEN |
977 | LoadConst(e) |
978 | IL.AddCmd(IL.opCOPY, ARITH.Int(e.value)) |
978 | END; |
979 | ELSE |
- | 980 | IL.AddCmd0(IL.opMOVE) |
|
Line 979... | Line 981... | ||
979 | IL.AddCmd0(IL.opMOVE) |
981 | END |
980 | 982 | ||
981 | |PROG.sysCODE: |
983 | |PROG.sysCODE: |
982 | REPEAT |
984 | REPEAT |
Line 1617... | Line 1619... | ||
1617 | fparSize := LSL(ORD(PROG.getFloatParamsPos(procType, 3, int, flt)), 5) + MIN(parSize, 4) |
1619 | fparSize := LSL(ORD(PROG.getFloatParamsPos(procType, 3, int, flt)), 5) + MIN(parSize, 4) |
1618 | ELSIF cconv IN {PROG._systemv, PROG.systemv} THEN |
1620 | ELSIF cconv IN {PROG._systemv, PROG.systemv} THEN |
1619 | callconv := IL.call_sysv; |
1621 | callconv := IL.call_sysv; |
1620 | fparSize := LSL(ORD(PROG.getFloatParamsPos(procType, PROG.MAXSYSVPARAM - 1, int, flt)), 5) + parSize; |
1622 | fparSize := LSL(ORD(PROG.getFloatParamsPos(procType, PROG.MAXSYSVPARAM - 1, int, flt)), 5) + parSize; |
1621 | stk_par := MAX(0, int - 6) + MAX(0, flt - 8) |
1623 | stk_par := MAX(0, int - 6) + MAX(0, flt - 8) |
- | 1624 | ELSIF cconv IN {PROG.fastcall, PROG._fastcall} THEN |
|
- | 1625 | IF parSize = 0 THEN |
|
- | 1626 | callconv := IL.call_stack |
|
- | 1627 | ELSIF parSize = 1 THEN |
|
- | 1628 | callconv := IL.call_fast1 |
|
- | 1629 | ELSIF parSize >= 2 THEN |
|
- | 1630 | callconv := IL.call_fast2 |
|
- | 1631 | END; |
|
- | 1632 | fparSize := 0 |
|
1622 | ELSE |
1633 | ELSE |
1623 | callconv := IL.call_stack; |
1634 | callconv := IL.call_stack; |
1624 | fparSize := 0 |
1635 | fparSize := 0 |
1625 | END; |
1636 | END; |
1626 | IL.setlast(begcall); |
1637 | IL.setlast(begcall); |