Rev 9847 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 9847 | Rev 9893 | ||
---|---|---|---|
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-2022, Anton Krotov |
4 | Copyright (c) 2018-2023, Anton Krotov |
5 | All rights reserved. |
5 | All rights reserved. |
Line 6... | Line 6... | ||
6 | *) |
6 | *) |
Line 1150... | Line 1150... | ||
1150 | reg1 := GetAnyReg(); |
1150 | reg1 := GetAnyReg(); |
1151 | lea(reg1, param2, sIMP); |
1151 | lea(reg1, param2, sIMP); |
1152 | movrm(reg1, reg1, 0) |
1152 | movrm(reg1, reg1, 0) |
Line 1153... | Line 1153... | ||
1153 | 1153 | ||
1154 | |IL.opPARAM: |
- | |
1155 | n := param2; |
1154 | |IL.opPARAM: |
1156 | IF n = 1 THEN |
1155 | IF param2 = 1 THEN |
1157 | UnOp(reg1); |
1156 | UnOp(reg1); |
1158 | push(reg1); |
1157 | push(reg1); |
1159 | drop |
1158 | drop |
1160 | ELSE |
1159 | ELSE |
1161 | ASSERT(R.top + 1 <= n); |
1160 | ASSERT(R.top + 1 <= param2); |
1162 | PushAll(n) |
1161 | PushAll(param2) |
Line 1163... | Line 1162... | ||
1163 | END |
1162 | END |
1164 | 1163 | ||
1165 | |IL.opJNZ1: |
1164 | |IL.opJNZ1: |
Line 1342... | Line 1341... | ||
1342 | pushc(param2); |
1341 | pushc(param2); |
1343 | CallRTL(IL._rot) |
1342 | CallRTL(IL._rot) |
Line 1344... | Line 1343... | ||
1344 | 1343 | ||
1345 | |IL.opNEW: |
1344 | |IL.opNEW: |
1346 | PushAll(1); |
1345 | PushAll(1); |
1347 | n := param2 + 8; |
1346 | n := param2 + 16; |
1348 | ASSERT(UTILS.Align(n, 8)); |
1347 | ASSERT(UTILS.Align(n, 16)); |
1349 | pushc(n); |
1348 | pushc(n); |
1350 | pushc(param1); |
1349 | pushc(param1); |
Line 1351... | Line 1350... | ||
1351 | CallRTL(IL._new) |
1350 | CallRTL(IL._new) |
Line 1785... | Line 1784... | ||
1785 | drop; |
1784 | drop; |
1786 | drop; |
1785 | drop; |
1787 | X86._movrm(reg1, reg1, 0, param2 * 8, FALSE); |
1786 | X86._movrm(reg1, reg1, 0, param2 * 8, FALSE); |
1788 | X86._movrm(reg1, reg2, 0, param2 * 8, TRUE) |
1787 | X86._movrm(reg1, reg2, 0, param2 * 8, TRUE) |
Line 1789... | Line -... | ||
1789 | - | ||
1790 | |IL.opCHKBYTE: |
- | |
1791 | BinOp(reg1, reg2); |
- | |
1792 | cmprc(reg1, 256); |
- | |
1793 | jcc(jb, param1) |
- | |
1794 | 1788 | ||
1795 | |IL.opCHKIDX: |
1789 | |IL.opCHKIDX: |
1796 | UnOp(reg1); |
1790 | UnOp(reg1); |
1797 | cmprc(reg1, param2); |
1791 | cmprc(reg1, param2); |
Line 1830... | Line 1824... | ||
1830 | END; |
1824 | END; |
Line 1831... | Line 1825... | ||
1831 | 1825 | ||
1832 | INCL(R.regs, reg1); |
1826 | INCL(R.regs, reg1); |
Line 1833... | Line -... | ||
1833 | ASSERT(REG.GetReg(R, reg1)) |
- | |
1834 | - | ||
1835 | |IL.opCHR: |
- | |
1836 | UnOp(reg1); |
- | |
1837 | andrc(reg1, 255) |
- | |
1838 | - | ||
1839 | |IL.opWCHR: |
- | |
1840 | UnOp(reg1); |
- | |
1841 | andrc(reg1, 65535) |
1827 | ASSERT(REG.GetReg(R, reg1)) |
1842 | 1828 | ||
1843 | |IL.opEQP, IL.opNEP, IL.opEQIP, IL.opNEIP: |
1829 | |IL.opEQP, IL.opNEP, IL.opEQIP, IL.opNEIP: |
Line 1844... | Line 1830... | ||
1844 | UnOp(reg1); |
1830 | UnOp(reg1); |
Line 2383... | Line 2369... | ||
2383 | VAR |
2369 | VAR |
2384 | path, modname, ext: PATHS.PATH; |
2370 | path, modname, ext: PATHS.PATH; |
Line 2385... | Line 2371... | ||
2385 | 2371 | ||
2386 | BEGIN |
2372 | BEGIN |
- | 2373 | Xmm[0] := 0; |
|
2387 | Xmm[0] := 0; |
2374 | X86.align16(TRUE); |
Line 2388... | Line 2375... | ||
2388 | tcount := CHL.Length(IL.codes.types); |
2375 | tcount := CHL.Length(IL.codes.types); |
2389 | 2376 | ||
2390 | Win64RegPar[0] := rcx; |
2377 | Win64RegPar[0] := rcx; |