Rev 8097 | Rev 9847 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 8097 | Rev 8859 | ||
---|---|---|---|
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-2020, Anton Krotov |
4 | Copyright (c) 2018-2021, Anton Krotov |
5 | All rights reserved. |
5 | All rights reserved. |
Line 6... | Line 6... | ||
6 | *) |
6 | *) |
Line 849... | Line 849... | ||
849 | 849 | ||
850 | |IL.opLEAVE, IL.opLEAVER, IL.opLEAVEF: |
850 | |IL.opLEAVE, IL.opLEAVER, IL.opLEAVEF: |
851 | IF opcode = IL.opLEAVER THEN |
851 | IF opcode = IL.opLEAVER THEN |
852 | UnOp(reg1); |
852 | UnOp(reg1); |
853 | IF reg1 # eax THEN |
853 | IF reg1 # eax THEN |
854 | GetRegA; |
- | |
855 | ASSERT(REG.Exchange(R, reg1, eax)); |
- | |
856 | drop |
854 | mov(eax, reg1) |
857 | END; |
855 | END; |
858 | drop |
856 | drop |
Line 859... | Line 857... | ||
859 | END; |
857 | END; |
Line 870... | Line 868... | ||
870 | mov(esp, ebp) |
868 | mov(esp, ebp) |
871 | END; |
869 | END; |
Line 872... | Line 870... | ||
872 | 870 | ||
Line 873... | Line -... | ||
873 | pop(ebp); |
- | |
874 | 871 | pop(ebp); |
|
875 | n := param2; |
- | |
876 | IF n > 0 THEN |
872 | |
877 | n := n * 4; |
873 | IF param2 > 0 THEN |
878 | OutByte(0C2H); OutWord(n MOD 65536) (* ret n *) |
874 | OutByte(0C2H); OutWord(param2 * 4 MOD 65536) (* ret param2*4 *) |
879 | ELSE |
875 | ELSE |
Line 880... | Line 876... | ||
880 | ret |
876 | ret |
Line 1319... | Line 1315... | ||
1319 | cmprc(eax, param1); |
1315 | cmprc(eax, param1); |
1320 | jcc(jg, param2) |
1316 | jcc(jg, param2) |
Line 1321... | Line 1317... | ||
1321 | 1317 | ||
1322 | |IL.opCASELR: |
1318 | |IL.opCASELR: |
- | 1319 | cmprc(eax, param1); |
|
- | 1320 | IF param2 = cmd.param3 THEN |
|
- | 1321 | jcc(jne, param2) |
|
1323 | cmprc(eax, param1); |
1322 | ELSE |
1324 | jcc(jl, param2); |
1323 | jcc(jl, param2); |
- | 1324 | jcc(jg, cmd.param3) |
|
Line 1325... | Line 1325... | ||
1325 | jcc(jg, cmd.param3) |
1325 | END |
1326 | 1326 | ||
Line 1327... | Line 1327... | ||
1327 | |IL.opCODE: |
1327 | |IL.opCODE: |
Line 2174... | Line 2174... | ||
2174 | OutByte(param2) |
2174 | OutByte(param2) |
Line 2175... | Line 2175... | ||
2175 | 2175 | ||
2176 | |IL.opFNAME: |
2176 | |IL.opFNAME: |
Line 2177... | Line -... | ||
2177 | fname := cmd(IL.FNAMECMD).fname |
- | |
2178 | - | ||
2179 | |IL.opLOOP, IL.opENDLOOP: |
2177 | fname := cmd(IL.FNAMECMD).fname |
Line 2180... | Line 2178... | ||
2180 | 2178 | ||
2181 | END; |
2179 | END; |
Line 2372... | Line 2370... | ||
2372 | 2370 | ||
2373 | IF TARGETS.OS IN {TARGETS.osWIN32, TARGETS.osLINUX32} THEN |
2371 | IF TARGETS.OS IN {TARGETS.osWIN32, TARGETS.osLINUX32} THEN |
2374 | opt.pic := TRUE |
2372 | opt.pic := TRUE |
Line 2375... | Line 2373... | ||
2375 | END; |
2373 | END; |
Line 2376... | Line 2374... | ||
2376 | 2374 | ||
2377 | REG.Init(R, push, pop, mov, xchg, NIL, NIL, {eax, ecx, edx}, {}); |
2375 | REG.Init(R, push, pop, mov, xchg, {eax, ecx, edx}); |
2378 | 2376 |