Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi konstante Arrays im Inline Assembler deklarieren (https://www.delphipraxis.net/93183-konstante-arrays-im-inline-assembler-deklarieren.html)

Neotracer64 1. Jun 2007 21:55


konstante Arrays im Inline Assembler deklarieren
 
Hallo :),

Ich möchte konstante Arrays in einer Assembler-Funktion in Delphi deklarieren.
So habe ich es probiert:

Delphi-Quellcode:
const
  nop = $90;
  dup10: Array[1..10] of Byte = ($90,$90,$90,$90,$90,$90,$90,$90,$90,$90);

procedure asm_build;assembler;
asm
  DB $90 //geht
  DB nop //geht
  DB dup10 // geht nicht :(
  DB 10 DUP $90; //geht nicht :(
end;
So etwas wie DUP gibt es in Delphi wohl nicht, sehe ich das richtig?
Wie bekomme ich mein Array da rein?
Ich habe noch viel längere Arrays...wenn ich alle Bytes einzeln reinschreiben würde müsste ich der Übersichtlichkeit halber für jede Funktion eine Unit machen :/

Danke schonmal im vorraus.

yankee 1. Jun 2007 23:00

Re: konstante Arrays im Inline Assembler deklarieren
 
Ein Array sind auch nur ganz viele Werte hintereinander. Ich meine, dass müsste (also ungetestet!) so gehen:

Delphi-Quellcode:
asm
  DB $90,$90,$90,$90,$90,$90,$90,$90,$90,$90
end;

Muetze1 1. Jun 2007 23:12

Re: konstante Arrays im Inline Assembler deklarieren
 
dup wurde im integrierten Assembler nicht umgesetzt. Nutze von daher yankee's Vorschlag.

Dax 1. Jun 2007 23:16

Re: konstante Arrays im Inline Assembler deklarieren
 
Delphi-Quellcode:
asm
  DD $90909090, $90909090 
  DW $9090
end;
Das kommt soweit ich weiß auf das selbe raus und ist weniger schreibaufwändig :)

Neotracer64 2. Jun 2007 00:09

Re: konstante Arrays im Inline Assembler deklarieren
 
Dankeschön, so gehts auch. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:34 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