Frage

Ich habe mich gefragt, ob jemand hier geschrieben hatte / verwendet ein Skript, das die Ausgabe von objdump und Extrakten Opcodes aus geparsten? Ich habe eine sehr, sehr triviale Implementierung, aber ich bin auf der Suche nach etwas besser.

Das Problem, das ich mit diesem Skript bin vor ist einfach, dass es einfacher String-Parsing tut; dies ist eher ein Utility-Skript, und das ist, warum ich Tests für diese nicht geschrieben haben. Ich frage mich, ob diese durch das Schreiben eines maßgeschneiderten Parser oder eine einfache, aber effiziente regulären Ausdruck getan werden könnte.

Diese Abfrage für den Zweck des Lernens ist, so dass ich ein solches Problem in einem (hoffentlich) nähern kann besser Weise beim nächsten Mal.

Ich habe nichts dagegen, die Besonderheiten der Implementierung (Shell, Ruby, Python, Perl, irgendetwas tun würde). Der Code ist nicht einmal wichtig, dass viel, wirklich, ich ein paar Hinweise auf möchte, wie Sie es tun würden.

War es hilfreich?

Lösung

Es tut mir leid, wenn dies nicht das, was Sie wollen, aber Ihre Paste ist nicht mehr verfügbar.

Hier ist ein kurzer Tipp. Verschiedene Teile des Ausgangs durch Tabulatoren getrennt ist.

'  402000:\t14 43                \tadc    $0x43,%al\n'

Dies sollte Ihnen den Start:

>>> r
'  402000:\t14 43                \tadc    $0x43,%al\n'
>>> r = r.strip()
>>> r
'402000:\t14 43                \tadc    $0x43,%al'
>>> r = r.split('\t')
>>> r
['402000:', '14 43                ', 'adc    $0x43,%al']
>>> r[1] = r[1].strip()
>>> r
['402000:', '14 43', 'adc    $0x43,%al']

Andere Tipps

Die beste Lösung wäre, von der Quelle zu bauen objdump und eine Python machen oder eine andere Sprache swig Wrapper, der die Ausgabe direkt erhält. Sie können es mit Zeichenfolgenanalyse tun, aber das ist oft Buggy (gelesen als schlecht umgesetzt). Es ist auf jeden Fall möglich, die String-Parsing richtig zu machen ... Ich habe ein Dienstprogramm, die auf diese angewiesen ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top