AGB  ·  Datenschutz  ·  Impressum  







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

Inline und Asmblock unter TD2006: Problem

Ein Thema von Go2EITS · begonnen am 4. Okt 2006 · letzter Beitrag vom 4. Okt 2006
Antwort Antwort
Seite 1 von 2  1 2      
Go2EITS

Registriert seit: 25. Jun 2006
519 Beiträge
 
Delphi 7 Personal
 
#1

Inline und Asmblock unter TD2006: Problem

  Alt 4. Okt 2006, 15:58
Wie löst Ihr das INLINE Problem mit Assemblerroutinen.

Ich möchte eine Routine
Delphi-Quellcode:
Procedure X;INLINE;
asm
//...CODE
end;
In TD2006 einfügen. Dies wird aber leider mit einer fehlermeldung honoriert: "Inline Function darf keinen Asmblock haben." In der System Unit konnte ich die Pos mit einem INLINE versehen. Aber ob die überhaupt mitcompiliert wird?

Habt Ihr schon einen "Trick"?
2x die Eingabe bei der DP abgestürzt. Daher nur noch meine "Kurzfassung."
  Mit Zitat antworten Zitat
Balu der Bär
(Gast)

n/a Beiträge
 
#2

Re: Asmblock unter TD2006 Problem

  Alt 4. Okt 2006, 15:59
Ähm lass einfach das INLINE weg?
  Mit Zitat antworten Zitat
Go2EITS

Registriert seit: 25. Jun 2006
519 Beiträge
 
Delphi 7 Personal
 
#3

Re: Asmblock unter TD2006 Problem

  Alt 4. Okt 2006, 16:02
Das Inline bringt doch ordentlich Geschwindigkeit. Es fällen doch umfangreiche Sicherungen weg.
Oder willst Du damit sagen das reine Asm code "geinlinet" wird?
  Mit Zitat antworten Zitat
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Asmblock unter TD2006 Problem

  Alt 4. Okt 2006, 16:17
Was meinst du damit, dass umfangreiche Sicherungen wegfallen?
Inline bedeutet, dass nicht jedesmal zu dem Code gesprungen wird, wenn er aufgerufen wird, sondern dass der Code überall dahin kopiert wird, wo er verwendet wird.
Julian J. Pracht
  Mit Zitat antworten Zitat
Go2EITS

Registriert seit: 25. Jun 2006
519 Beiträge
 
Delphi 7 Personal
 
#5

Re: Asmblock unter TD2006 Problem

  Alt 4. Okt 2006, 16:25
Es fallen bei Inline die umfangreichen Registersicherungen weg, die bei Aufrufen von Proceduren Geschwindigkeit kosten. Daher gibt es ja bei "INLINE" keine "Procedurenssprünge" mehr.
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#6

Re: Asmblock unter TD2006 Problem

  Alt 4. Okt 2006, 16:51
Bei inline-Methoden kopiert der Compiler den nötigen Maschinencode dorthin, wo normalerweise der Aufruf stünde. Assemblercode hat dort nix zu suchen, weil du da mit 100% Wahrscheinlichkeit mehr Schaden anrichten würdest als du Nutzen daraus ziehen könntest.

Darum: Assembler nur ohne inline. Oder kein Assembler.
  Mit Zitat antworten Zitat
Go2EITS

Registriert seit: 25. Jun 2006
519 Beiträge
 
Delphi 7 Personal
 
#7

Re: Asmblock unter TD2006 Problem

  Alt 4. Okt 2006, 17:13
Bin gespannt was Pos aus der Systemunit im Vergleich zu der aus FastCode Projekt unter TD2006 macht.
Unter D7 war 50% bis 70% Steigerung drin. Allein die AnsiStrAtPos aus der DP ist genial. Ist ein Ersatz zu Uppercase und Pos. Da muss ich noch mal testen, ob sich der Einbau von Fastcodes unter DP sich wirklich noch lohnt.
  Mit Zitat antworten Zitat
Balu der Bär
(Gast)

n/a Beiträge
 
#8

Re: Asmblock unter TD2006 Problem

  Alt 4. Okt 2006, 17:20
Zitat von Delphi Hilfe:
Das reservierte Wort inline und die Direktive assembler werden aus Gründen der Abwärtskompatibilität beibehalten. Sie haben keine Auswirkungen auf den Compiler.
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Asmblock unter TD2006 Problem

  Alt 4. Okt 2006, 17:26
lol?!

also die Direktive inline wurde mit D2005 eingeführt. Und sorgt dafür, dass der Compiler, wann immer es irgendwie möglich ist, ein inlining vornimmt. vielleicht macht er das ja jetzt schon selbstständig und "braucht" die Direktive nicht mehr.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Go2EITS

Registriert seit: 25. Jun 2006
519 Beiträge
 
Delphi 7 Personal
 
#10

Re: Asmblock unter TD2006 Problem

  Alt 4. Okt 2006, 17:53
Also:
Pos aus FastCode (die schnellste Version) ist ca. 10% schneller als die Pos aus TD2006 Unit System.
Uppercase aus FastCode (auch hier die schnellste Version verwendet) ist 20% langsamer als das Uppercase aus der TD2006 UNIT.
Ich glaubte, das mit Inline noch etwas rauszuholen sei. Da bin ich wohl im Irrtum. Es reicht auch so.

Interssant wird es, meiner Meinung nach, wenn man Uppercase und Pos durch eine Assblerprocedure ersetzt. Aber ich glaube, dass eine gute Procedure ohnen ASM, die beides zusammenfasst, kaum langsamer sein wird. Der Compiler optimiert zu optimal.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 18:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz