AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Rotate in Delphi-Language?

Ein Thema von himitsu · begonnen am 26. Okt 2014 · letzter Beitrag vom 28. Okt 2014
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.313 Beiträge
 
Delphi 12 Athens
 
#1

Rotate in Delphi-Language?

  Alt 26. Okt 2014, 02:03
Delphi-Version: 5
Moin moin,

warum gibt es eigentlich nur SHL und SHR, aber z.B. nicht ROL und ROR in der Delphi-Language?

Ja, man kann das z.B. via Assembler lösen, aber Inline-Assembler gibt jes ja nicht mehr (Win64 - innerhalb von Prozeduren), sondern nur noch als ganze Funktionen, wo das Inline auch nicht (richtig) funktioniert.
Delphi-Quellcode:
function ROL(Value: Integer; Count: Byte): Integer; inline;
asm
  ROL EAX, DL
end;
Aber vorallem in Bezug auf Multiplattform macht sich Assembler eh nicht so gut
und sowas wie (a shl i) or (a shr (32-i)) ist doch auch nicht wirklich eine schöne Lösung, vorallem da doch praktisch alle CPUs solche Befehle direkt unterstüzen.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (26. Okt 2014 um 02:38 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#2

AW: Rotate in Delphi-Language?

  Alt 26. Okt 2014, 11:58
Zitat von himitsu:
Aber vorallem in Bezug auf Multiplattform macht sich Assembler eh nicht so gut
und sowas wie (a shl i) or (a shr (32-i)) ist doch auch nicht wirklich eine schöne Lösung, vorallem da doch praktisch alle CPUs solche Befehle direkt unterstüzen.
Mhm, in C/C++ gibt es solche Konstrukte, die praktisch von jedem Compiler zu ROR/ROL übersetzt/optimiert werden. Vielleicht funktioniert das bei Delphi auch?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.313 Beiträge
 
Delphi 12 Athens
 
#3

AW: Rotate in Delphi-Language?

  Alt 26. Okt 2014, 12:36
Als ich das letzte Mal nachsah, da war er nicht so schlau.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
OlafSt

Registriert seit: 2. Mär 2007
Ort: Hamburg
284 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Rotate in Delphi-Language?

  Alt 26. Okt 2014, 20:57
Mit einer winzigen Veränderung gehts auch in 64-Bit:

Delphi-Quellcode:
function ROL(Value: Cardinal; Count: Byte): Cardinal; assembler; //Beachte die Direktive
asm
   ROL EAX, DL
end;
Cardinals, weil das ganze als unsigned-Rotate arbeitet.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.313 Beiträge
 
Delphi 12 Athens
 
#5

AW: Rotate in Delphi-Language?

  Alt 26. Okt 2014, 22:30
Sprünge sind aber ungünstig und inlining klappt bei Assembler nicht so gut.
Dann fehlt ja nur noch OSX (das dürfte aber mit dem Win64 übereinstimmen) und dann gibt es noch iOS, iOS64, Android, Linux usw.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#6

AW: Rotate in Delphi-Language?

  Alt 27. Okt 2014, 13:24
Wozu braucht man eigentlich den 'Rotate' Operator so?
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.087 Beiträge
 
Delphi XE2 Professional
 
#7

AW: Rotate in Delphi-Language?

  Alt 27. Okt 2014, 14:14
Sprünge sind aber ungünstig und inlining klappt bei Assembler nicht so gut.
Gar nicht!

Aus der OH : "Für Routinen, die Assembler-Code enthalten, wird kein Inlining vorgenommen."
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  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 22:17 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 by Thomas Breitkreuz