AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE Delphi 12: Enum Value to Record per Implicit-Operator ist kaputt
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi 12: Enum Value to Record per Implicit-Operator ist kaputt

Ein Thema von TiGü · begonnen am 7. Dez 2023 · letzter Beitrag vom 13. Feb 2024
Antwort Antwort
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.074 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: Delphi 12: Enum Value to Record per Implicit-Operator ist kaputt

  Alt 12. Dez 2023, 14:28
Da haben sie wohl beim open array 64-bit machen ne Stelle im Compiler vergessen.
Reported: https://quality.embarcadero.com/browse/RSP-43656
Vielen lieben Dank für den vereinfachten Testfall und das reporten!

@Alle: Bitte für den RSP voten!
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.812 Beiträge
 
Delphi 12 Athens
 
#2

AW: Delphi 12: Enum Value to Record per Implicit-Operator ist kaputt

  Alt 12. Dez 2023, 15:18
Abgestimmt!

Ich bin ja sowas von beunruhigt, daß die bei Embarcadero Unit Tests nicht besser machen als ich.
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.074 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Delphi 12: Enum Value to Record per Implicit-Operator ist kaputt

  Alt 13. Dez 2023, 15:47
Hier die generierten Debug Win64 Disassembler-Views zwischen begin und end des TRec.Implicit-Operators.
Sieht schon blöd anders aus unterhalb der for-Schleife.

Delphi-Quellcode:
// Delphi 11.3
SteviesExample.dpr.20: begin
000000000042BC50 55 push rbp
000000000042BC51 4883EC10 sub rsp,$10
000000000042BC55 488BEC mov rbp,rsp
000000000042BC58 895528 mov [rbp+$28],edx
SteviesExample.dpr.24: for i := Low(values) to High(values) do
000000000042BC5B 33C0 xor eax,eax
000000000042BC5D 8B4D28 mov ecx,[rbp+$28]
000000000042BC60 894508 mov [rbp+$08],eax
000000000042BC63 394D08 cmp [rbp+$08],ecx
000000000042BC66 7F10 jnle TRec.&op_Implicit + $28
000000000042BC68 2BC8 sub ecx,eax
000000000042BC6A 83C101 add ecx,$01
SteviesExample.dpr.28: end;
000000000042BC6D 83450801 add dword ptr [rbp+$08],$01
SteviesExample.dpr.24: for i := Low(values) to High(values) do
000000000042BC71 83E901 sub ecx,$01
000000000042BC74 85C9 test ecx,ecx
000000000042BC76 75F5 jnz TRec.&op_Implicit + $1D
000000000042BC78 90 nop
SteviesExample.dpr.31: end;
000000000042BC79 8B450C mov eax,[rbp+$0c]
000000000042BC7C 488D6510 lea rsp,[rbp+$10]
000000000042BC80 5D pop rbp
000000000042BC81 C3 ret


// Delphi 12
SteviesExample.dpr.20: begin
000000000042C4C0 55 push rbp
000000000042C4C1 4883EC30 sub rsp,$30
000000000042C4C5 488BEC mov rbp,rsp
000000000042C4C8 48895548 mov [rbp+$48],rdx
SteviesExample.dpr.24: for i := Low(values) to High(values) do
000000000042C4CC 488B4548 mov rax,[rbp+$48]
000000000042C4D0 B900000080 mov ecx,$80000000
000000000042C4D5 488D0C01 lea rcx,[rcx+rax]
000000000042C4D9 BAFFFFFFFF mov edx,$ffffffff
000000000042C4DE 483BCA cmp rcx,rdx
000000000042C4E1 7605 jbe TRec.&op_Implicit + $28
000000000042C4E3 E8E8B8FDFF call @BoundErr
000000000042C4E8 33C9 xor ecx,ecx
000000000042C4EA 894D28 mov [rbp+$28],ecx
000000000042C4ED 394528 cmp [rbp+$28],eax
000000000042C4F0 7F10 jnle TRec.&op_Implicit + $42
000000000042C4F2 2BC1 sub eax,ecx
000000000042C4F4 83C001 add eax,$01
SteviesExample.dpr.28: end;
000000000042C4F7 83452801 add dword ptr [rbp+$28],$01
SteviesExample.dpr.24: for i := Low(values) to High(values) do
000000000042C4FB 83E801 sub eax,$01
000000000042C4FE 85C0 test eax,eax
000000000042C500 75F5 jnz TRec.&op_Implicit + $37
000000000042C502 90 nop
SteviesExample.dpr.31: end;
000000000042C503 8B452C mov eax,[rbp+$2c]
000000000042C506 488D6530 lea rsp,[rbp+$30]
000000000042C50A 5D pop rbp
000000000042C50B C3 ret
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.074 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Delphi 12: Enum Value to Record per Implicit-Operator ist kaputt

  Alt 14. Dez 2023, 07:36
Könnte das damit zusammenhängen?
Die Stichwörter sind alle da:

https://docwiki.embarcadero.com/RADS...y_Improvements
Zitat:
The hidden "high bound" parameter type for an open array parameter was changed from Integer to NativeInt, an alias of Integer or Int64, depending on the target CPU. This means that Length, High, and Low for open array parameters in 64-bit compilers now return 64-bit value.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.045 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

AW: Delphi 12: Enum Value to Record per Implicit-Operator ist kaputt

  Alt 7. Feb 2024, 13:42
RSP-43656 taucht zumindest in der Liste der in Patch 1 gefixten Issues auf
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.074 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Delphi 12: Enum Value to Record per Implicit-Operator ist kaputt

  Alt 13. Feb 2024, 07:49
RSP-43656 taucht zumindest in der Liste der in Patch 1 gefixten Issues auf
Kann ich als gefixt bestätigen.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz