Einzelnen Beitrag anzeigen

markus888

Registriert seit: 23. Dez 2018
46 Beiträge
 
#1

Assembler - Register dynamisch bestimmen.

  Alt 16. Apr 2020, 13:00
Ich arbeite mich grade etwas in Assembler ein und schreibe meine ersten Codes damit.

Unter anderem frage ich mich, ob es irgendwie möglich ist, dynamischen Code zu generieren.

Die Aufgabe: In einem Multimedia Register muss ein Befehl auf eine dynamische Anzahl an Registern angewendet werden.

z.B. xmm0 bis xmm3 jeweils um 4 Bit shiften, dann xmm0 bis xmm3 jeweils mit xmm4 bis xmm7 summieren.

Das könnte dann genauso zmm0/ymm0 bis zmm(n) sein. - Ich weiß avx geht nicht direkt.

Zuerst dachte ich daran Opcodes dynamisch zu erzeugen um das ganze in einer Schleife zu durchlaufen.

DD EAX
DD EineVariable

aber das geht nicht - Fehlermeldung: Konstante erwartet.
Das einzige was der Compiler nicht reklamiert:
DD EineKonstante

mit DW/DB immer der Fehler (Konstante erwartet), egal wie ich die Konstante deklariere (Byte, Word, DWord)

In der Hilfe gibts ja diverse Beispiele dazu:

http://docwiki.embarcadero.com/RADSt...sembler-Syntax

z.B: DD MyVar { Pointer to MyVar }

Da wünscht sich der Compiler aber laut Fehlermeldung eine Konstante.

Kennt wer einen Weg, wie das funktionieren könnte, oder muss ich wirklich jeden Fall fix im Code hinterlegen?
Oder kann ich den Compiler dazu bewegen, eine normale Variable oder ein Register zu verwenden?

Danke Markus

Geändert von markus888 (16. Apr 2020 um 13:03 Uhr)
  Mit Zitat antworten Zitat