![]() |
Findfirst/Findnext in Assembler
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. :gruebel: Danke. |
Re: Findfirst/Findnext in Assembler
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 |
Re: Findfirst/Findnext in Assembler
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 :coder: |
Re: Findfirst/Findnext in Assembler
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. |
Re: Findfirst/Findnext in Assembler
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. ![]() 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 :freak: . Wenn du erst einmal gepeilt hast wie der funktioniert hast du schon einiges gut. Just do it ! MfG LB |
Re: Findfirst/Findnext in Assembler
Ja, so'n paar Stack Sachen hab' ich schon gepushed und "gepoppt". :wink:
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 |
Re: Findfirst/Findnext in Assembler
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 |
Re: Findfirst/Findnext in Assembler
Zitat:
Code:
var MyArray: array[0..9] of DWORD
MyArray DD 10 DUP (?) Du wirst die Interrupts aber hoffentlich nicht in einem Win32 Programm verwenden. |
Re: Findfirst/Findnext in Assembler
Zitat:
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 |
Re: Findfirst/Findnext in Assembler
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. :coder: MfG LB |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:59 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