Subversion Repositories Kolibri OS

Rev

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