Seite 2 von 2
Verfasst: Dienstag 12. Januar 2010, 01:33
von jbs
Erstmal mit vernünftigem Highlight:
http://paste.pocoo.org/show/164511/
Warum machst du denn ein ``je return`` wenn return nur ``ret`` enthält?
Ah, ich habs verstanden

`je` ist jump equal, oder? Fühle mich gerade ein wenig an unsere Assemblerzeit in der Schule erinnert.
Verfasst: Dienstag 12. Januar 2010, 02:10
von Leonidas
problembär hat geschrieben:Zu Deinem Python-Vorschlag fand ich übrigens noch interessant, daß viele auch bei so einfacher Datenverarbeitung in Python recht bald mit Modulen arbeiten. Spricht ja nichts dagegen, überrascht mich nur etwas

.
Natürlich - warum auch Sachen selbst amchen wenn man einfach Module nutzen kann deren Verwendung nahezu keine Kosten hat.
Die Assembler-Lösung finde ich fein. ``je`` ist natürlich Jump Equal, ``jne`` ist das Gegenteil. Der Transform-Teil verwundert mich ein wenig, aber ich schätze mal dass so die Parameter entgegengenommen werden, also liegt der String in ``ebx`` und wird auf den Stack kopiert. Schade dass bei uns in der Uni nur uninteressante Aufgaben in Assembler gegeben wurden.
Verfasst: Dienstag 12. Januar 2010, 08:58
von BlackJack
@Leonidas: Ja naja, es steht ja "ungetestet" dran. Über die Parameterübergabe wunderst Du Dich zurecht, denn ganz oben auf dem Stapel steht natürlich die Rücksprungadresse. Argh. Ausserdem muss der Aufgerufene Code beim `gcc` das `ebx`-Register am Ende wieder in den ursprünglichen Zustand versetzen. Mit dem `ecx`-Register kann man dagegen machen was man will. Also hier das Ganze noch einmal in funktionierend:
http://paste.pocoo.org/show/164572/
Getestet mit:
Code: Alles auswählen
#include <stdio.h>
#include <string.h>
extern void transform(char *s);
int main(void)
{
char a[] = "AGSKYSASJKASIOJASJK----ACTG";
puts(a);
transform(a);
puts(a);
return 0;
}