Hi,

I'm really stuck here, meanwhile I made the testing program look exactly
the same in structure like the code sequence in question, forced both to
use AnsiStrings and stared at the assembler code - to no avail, because
I do not understand enough x86 asm. ;)

The string variable is holding the same directory name and path in both
cases, of course. For the code look into my previous mail, please.

Can someone comment on these snippets:

<original>
# [457] fpaccess((*ExpandFileName*) tmp , R_OK);
        movl    $4,%ebx
        movl    -192(%ebp),%eax
        call    FPC_ANSISTR_INCR_REF
        leal    -520(%ebp),%eax
        call    FPC_ANSISTR_DECR_REF
        movl    -192(%ebp),%eax
        movl    %eax,-520(%ebp)
        movl    %ebx,%edx
        movl    -520(%ebp),%eax
        testl   %eax,%eax
        jne     .L583
        movl    $FPC_EMPTYCHAR,%eax
.L583:
        call    FPC_SYSC_ACCESS
# [458] n := getlastoserror;
        call    SYSUTILS_GETLASTOSERROR$$LONGINT
        movl    %eax,-120(%ebp)
# [459] writeln(n);
        call    fpc_get_output
</original>

<test>
# [11] res := fpaccess(tmp, R_OK);
        movl    $4,%ebx
        movl    U_P$STAT_TMP,%eax
        call    FPC_ANSISTR_INCR_REF
        leal    -44(%ebp),%eax
        call    FPC_ANSISTR_DECR_REF
        movl    U_P$STAT_TMP,%eax
        movl    %eax,-44(%ebp)
        movl    %ebx,%edx
        movl    -44(%ebp),%eax
        testl   %eax,%eax
        jne     .L24
        movl    $FPC_EMPTYCHAR,%eax
.L24:
        call    FPC_SYSC_ACCESS
        movw    %ax,U_P$STAT_RES
# [13] res := getlastoserror;
        call    SYSUTILS_GETLASTOSERROR$$LONGINT
        movw    %ax,U_P$STAT_RES
# [14] writeln(res);
</test>

For me the look structurally identical, but some differences like the
$XXX-variables(?) don't.

Marc


_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to