AGB  ·  Datenschutz  ·  Impressum  







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

Findfirst/Findnext in Assembler

Ein Thema von Dannyboy · begonnen am 15. Sep 2003 · letzter Beitrag vom 16. Sep 2003
Antwort Antwort
Seite 1 von 3  1 23      
Dannyboy

Registriert seit: 4. Aug 2003
Ort: Delphi-Heaven
418 Beiträge
 
Delphi 7 Personal
 
#1

Findfirst/Findnext in Assembler

  Alt 15. Sep 2003, 09:29
Hi,
hat jemand ein Findfirst/Findnext Beispiel in Assembler?
Bin gerade dabei mir die Grundfunktionen anzueignen
und bräuchte daher dieses Beispiel in REINEM Assembler.
Insbesondere müsste ich wissen, wie die Information
der Dateiattribute aufgebaut ist, die an den Register
übergeben wird.

Ein Beispiel, welches einfach alle Dateien (*.*) im
aktuellen Ordner sucht, und mir deren Namen auf den
Stack pushed, wäre gut.

Danke.
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#2

Re: Findfirst/Findnext in Assembler

  Alt 15. Sep 2003, 10:51
Warum benötigst du dies in Assembler ?
Jeder Compiler wie Delphi/C wird genau so guten Assembler compilieren wie der Mensch. Das liegt daran das bei einer FindFirst()/FindNext() Schleife du nicht viele Möglichkeiten hast durch manuellen Assembler was zu verbessern. Erzeuge einen Delphi Source, compiliere ihn, setze Breakpoint auf erste Quelltestzeile, starte dann Anwendung. Wenn am Breakpoint gehalten wird öffne den CPU View der IDE und nun kannste dir den Machinencode anschauen. Du wirst sehen das eine FindFirst() FindNext() Schleife fast nur aus CALL's zu API Funktionen besteht. Somit wird die Performance dieser Schleife fast nur durchs API bestimmt. Da du auch in Assembler diese CALL's nutzen musst bringt dieser keiner bessere Performance.

Zudem, in Delphi/C kannste mit geschützen Codeblöcken arbeiten, sprich try finally usw. Das geht auch in Assembler aber du kannst dann nicht mehr so einfach die try finally's vom Delphi benutzen. D.h. in Deinem Beispiel bingt Assembler keine Vorteile, nur Nachteile bei der Wartung der Source.

Gruß Hagen
  Mit Zitat antworten Zitat
Dannyboy

Registriert seit: 4. Aug 2003
Ort: Delphi-Heaven
418 Beiträge
 
Delphi 7 Personal
 
#3

Re: Findfirst/Findnext in Assembler

  Alt 15. Sep 2003, 12:18
Danke für Deine Mühe, aber das mit Delphi etc, bringt mir nichts, da
ich dabei bin ASSEMBLER zu lernen und daher NICHT den einfachen Weg
durch Delphi gehen möchte. Es geht auch nicht um das Sparen von
Ressourcen. Ich werde aber mal die Breakpoints setzten und mir die
Register ansehen.


Dankeschön
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Findfirst/Findnext in Assembler

  Alt 15. Sep 2003, 13:24
Moin Dannyboy,

dann würde es sich allerdings anbieten, wenn Du Dich, zur Übung, mal damit beschäftigst, beispielsweise StringFunktionen wie StringReplace oder Copy in Assembler zu erstellen.
Das dürfte als Übung, und auch anschliessend, mehr bringen, als Register für den Aufruf von Betriebssystemfunktionen vorzubereiten.

Ein kleines Beispiel findest Du auch hier in der Code-Library. Dort hat sakura eine erweiterte Pos-Funktion reingestellt.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Lillebrohr
(Gast)

n/a Beiträge
 
#5

Re: Findfirst/Findnext in Assembler

  Alt 15. Sep 2003, 13:47
Guten Tag Dannyboy,


Da ich selber in Assembler code kann ich dir für den Anfang nur die Tutorials von Iczelion empfehlen. Hier ist ein Link zu seinem Tutorial.

http://www.robsite.de/download.php?i...brik=tassembly

Und als Buch kann ich dir nur das Assembler Buch von Addison Wresley empfehlen.

nur als Tip: fang nich gleich mit sowas an. Beschäftige dich erstmal eine Weile mit strings und Stringformatierungen. Was sehr wichtig ist, DER STACK + HEAP . Wenn du erst einmal gepeilt hast wie der funktioniert hast du schon einiges gut.


Just do it !


MfG

LB
  Mit Zitat antworten Zitat
Dannyboy

Registriert seit: 4. Aug 2003
Ort: Delphi-Heaven
418 Beiträge
 
Delphi 7 Personal
 
#6

Re: Findfirst/Findnext in Assembler

  Alt 15. Sep 2003, 14:01
Ja, so'n paar Stack Sachen hab' ich schon gepushed und "gepoppt".
Ich habe mir mal diese Liste der Interrupts
besorgt, da steht so viel drin ... Ja, vielleicht habt ihr Recht.
Ich versuche nun mal ein kleines Quicksort mit ASM zu schreiben.
In dem integrierten Asm von Pascal habe ich das schon realisiert,
weil ich da sowieso das Array, welches sortiert werden muss, in
der VAR-Dekla von Pascal deklariere. Ich weiss nicht, wie man ein
Array in reinem Asm definiert, aber das kriege ich schon hin. Ich
werde dann mal ein wenig „tief stapeln“ und mit ein paar Stack Operationen
weiter machen. Thx, boyz
  Mit Zitat antworten Zitat
Lillebrohr
(Gast)

n/a Beiträge
 
#7

Re: Findfirst/Findnext in Assembler

  Alt 15. Sep 2003, 14:07
Guten Tag,


Wie jetzt ? du machst noch nichmal reines ASM ? nur son Mix aus Pascal und Asm ? Das ist ja quatsch, find ich. Aber naja muss jeder selber wissen.

Und wie ich ejtzt mitbekommen habe machst du 16 bit asm. Tja da helfen dir die Tuts auch nciht allzu viel.


Na gut, dann push mal weiter.


MfG


LB
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#8

Re: Findfirst/Findnext in Assembler

  Alt 15. Sep 2003, 14:13
Zitat von Dannyboy:
Ich weiss nicht, wie man ein Array in reinem Asm definiert
Code:
var MyArray: array[0..9] of DWORD

MyArray DD 10 DUP (?)

Du wirst die Interrupts aber hoffentlich nicht in einem Win32 Programm verwenden.
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#9

Re: Findfirst/Findnext in Assembler

  Alt 15. Sep 2003, 16:14
Zitat:
Wie jetzt ? du machst noch nichmal reines ASM ? nur son Mix aus Pascal und Asm ? Das ist ja quatsch, find ich. Aber naja muss jeder selber wissen.
Quatsch ist es heutzutage alles in Assembler zu coden. Gerade die Kombination aus einer guten Hochsprache + Assembler ist effektiv. Ein guter Compiler wird durchschnittlich besseren Code erzeugen als dies der Mensch in der gleichen Zeit könnte. Bevor du überhaupt nachgedacht hast wie dein Assemblersource aussehen soll hat der Compiler einer Hochsprache feritg compiliert. Ich persönlich nutzte nur noch den Inline-ASM und dann auch nur wenn ich weiß das meine Maunuelle Assemblersource mir mehr als 20% Speedup bringen muß. Im Durchschnitt wird ein reiner Assemblersource nur maximal 5-10% schneller sein als ein compilierter Source einer Hochsprache. Demzufolge sind heute nicht die Grundalgorithmen entscheidend sondern es ist entscheidend den Überblick über komplexere Algorithmen zu haben. Dies ist mit Assembler niemals möglich. Deshalb sind reine Assembler Coder Leute die sich lieber auf die Optimierung von Kleinigkeiten stürtzen, als ein Problem im gesammten besser zu optimieren. Sorry, wenn ich das so hart sage, aber diese Erfahrungen habe ich selber an mir festgestellt
Wenn ich dir meine 250.000 Zeilen Anwendung maile und du solltest sie in Assembler umsetzen, dann geht das nicht in entsprechender Zeit.

Gruß Hagen
  Mit Zitat antworten Zitat
Lillebrohr
(Gast)

n/a Beiträge
 
#10

Re: Findfirst/Findnext in Assembler

  Alt 15. Sep 2003, 16:35
Guten Tag Hagen,

also ich programiere ASM nicht um irgendwelche Riesenprogramme zu schreiben sondern aus verschiedenen Gründen:

- Copy & Paste aus IDA (Disassembler)
- Geringe Filesize (10 kb)
- ist einfach geil

Ok, ich mein mal von der Filesize ausgehend ist es für mich schwachsinn z.B. in Delphi ASM zu integrieren. Da ja trodzdem 400 KB rauskommen.

Ich bin halt ein kleiner Größenfetischist.

MfG

LB
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 08:51 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