Question

Je me demandais si quelqu'un ici avait écrit / utilise un script qui analyse la sortie de objdump et extraits opcodes de celui-ci? J'ai une mise en œuvre très très banal, mais je cherche quelque chose de mieux.

Le problème que je suis confronté avec ce script est tout simplement qu'il fait l'analyse des chaînes simples; ce qui est plus d'un script utilitaire, et c'est pourquoi les tests que je ne l'ai pas écrit pour ces derniers. Je me demandais si la même chose pourrait être fait en écrivant un analyseur sur mesure ou un simple mais efficace expression régulière.

Cette requête est dans le but de l'apprentissage, afin que je puisse aborder un tel problème dans un (je l'espère) une meilleure manière la prochaine fois.

Je ne me dérange pas les détails de la mise en œuvre (shell, ruby, python, perl, quoi que ce soit ferait). Le code ne même pas d'importance tant que ça, vraiment, je voudrais quelques conseils sur la façon dont vous le faire.

Était-ce utile?

La solution

Je suis désolé si ce n'est pas ce que vous vouliez, mais votre pâte n'est plus disponible.

Voici une astuce rapide. Les différentes parties de la sortie sont séparées par des pattes.

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

Cela devrait vous aider à démarrer:

>>> 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']

Autres conseils

La meilleure solution serait de construire objdump de la source et faire un python ou un autre wrapper de langue qui obtient la sortie directement. Vous pouvez le faire avec l'analyse des chaînes, mais qui est souvent voiturette (lire comme mis en œuvre mal). Il est certainement possible de faire la chaîne correctement ... J'analyse ai un utilitaire qui repose sur ce sujet.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top