Hallo zusammen, ich bin momentan am verzweifeln. Ich habe hier eine fft Routine in Assembler, welche ich aus C aufrufe. Die Routine funktioniert einwandfrei. In der Confing.h wird aber eine Konstante mit 256 definiert #define FFT_N 256 Diese Konstante möchte ich zur Laufzeit ändern können (64,128,256,512,1024). Ich bekomme es aber nicht hin das Assembler abzuändern, da ich von Assembler wenig Ahnung habe. Im Assembler File wird durch die Konstante FFT_N noch weitere Konstanten definiert. Dadurch lässt sich FFT_N nicht einfach in eine externe variable umändern. Ich hoffe jemand von euch kann sich das Assembler File mal anschauen und die Konstanten variabel machen. Ich wäre sehr dankbar dafür. Mit freundlichen Grüßen Sebastian
Sebastian Weidmann schrieb: > Hallo zusammen, > > ich bin momentan am verzweifeln. > Diese Konstante möchte ich zur Laufzeit ändern können > (64,128,256,512,1024). > > Ich bekomme es aber nicht hin das Assembler abzuändern, da ich von > Assembler wenig Ahnung habe. Das geht auch nicht so einfach. Dazu wären massive Umbauten im Assembler Code notwendig. Alleine schon das Zusammenführen der jeweiligen vordefinierten Tabellen für die jeweilige FFT Größe in eine gemeinsame Tabelle, zieht einen Rattenschwanz an Änderungen nach sich. Möglich: ja. Aber nicht in 20 Minuten.
Ja das ist mir bewusst, dass es nicht in 20 Minuten erledigt ist. Wenn mir jemand den Code lauffähig abändern kann, bin ich auch bereit etwas dafür zu bezahlen.
Am einfachsten ist es wohl, 4 Varianten zu erzeugen: eine für jede Konstante. Und dann abhängig vom Wert von die Ausprägung des Algorithmus' für das entsprechende FFT_N auszurufen. Damit vereinfacht sich das ganze auf die Umbenennung von Labels, die Generierung und die Verzweigung, die man einfach in C implementieren kann. Falls die Variante zur Compilezeit bekannt ist, kann der Vergleich dann wegoptimiert werden.
@Johann L. Ja das habe ich mir auch schon überlegt. Das wäre wohl wirklich die einfachste Variante. Es gäbe dann halt 4-5 Varianten. Wahrscheinlich würden beim Umbau des Assemblers auch zahlreiche Fehler entstehen.
Johann L. schrieb: > Am einfachsten ist es wohl, 4 Varianten zu erzeugen hab ich auch schon überlegt. Eine andere Überlegung, wobei ich nicht weiß, ob das mathematisch zielführend ist. Da eine FFT ja sowieso nur mit 2-er POtenzen funktioniert ... ... könnte man nicht einfach hergehen und grundsätzlich immer mit einer 10 Bit FFT rechnen und dazu einfach die Eingangswerte entsprechend oft duplizeren? Mir ist klar, dass man da natürlich Laufzeit verschenkt. Aber rein prinzipiell: würde die FFT da das richtige Ergebnis liefern? Also anstelle einer 9 bit FFT mit den Eingangswerte 23, 56, 78, 98, .... eine 10 Bit FFT anwerfen mit den Eingangswerten 23, 23, 56, 56, 78, 78, 98, 98, ....
@Karl Heinz Hab ich schon versucht. Das Ergebnis war aber nicht so berauschend. Warum kann ich mathematisch aber nicht erklären. Kommt aber eh nicht in Frage, da die Laufzeit eine sehr große Rolle spielt. Die 4-5 Varianten Lösung gefällt mir am besten und werde ich so jetzt umsetzen. Vielen vielen Dank für eure schnelle Hilfe!!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.