W dniu 2010-10-22 23:30, Florian Klämpfl pisze:
Am 22.10.2010 23:17, schrieb Dariusz Mazur:
full source in attachment (should I prepare it different?)
The best would be a diff against compiler sources.

OK. First I find better computing of hash. My is slight worse than current (but overall faster)

Second: when I review assembler list I've notice some strange lines (all
optimizations are enabled):

Which compiler version? 2.4.x? I think r15502 in trunk should fix this.
2.5.1 but older. Now I test from current. Its better (faster) but I found other strange:

first: dec(i) is translate to three lines
    movl    %esi,%eax
    decl    %eax
    movl    %eax,%esi

why not simple decl %esi ?
When variable is in %ebx things are the same.


second  if I have:
  while ii>0 do begin
     ....;
   dec(ii);


assembler look:


# [121] while ii>0 do begin
    jmp    .Lj16  //<  here add first test of ii
    .balign 4,0x90
.Lj15:
.Ll8:
# [122] result:=LongWord(result *8010817  ) xor (Pw^);
.Ll10:
# [124] dec(ii);
    movl    %esi,%eax
    decl    %eax
    movl    %eax,%esi
.Lj16:
    testl    %esi,%esi    //<--  this can be avoid, because test from DECL
    jg    .Lj15


Is this possible to achieve this optimizations,
If yes, can somebody help, from which file I should start





--
  Darek




_______________________________________________
fpc-devel maillist  -  [email protected]
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to