3

ここの誰かが、出力を解析してobjdumpオペコードを抽出するスクリプトを作成/使用したかどうか疑問に思っていましたか? 私は非常に些細な実装をしていますが、もっと良いものを探しています。

このスクリプトで私が直面している問題は、単に単純な文字列解析を行うことです。これはどちらかというとユーティリティ スクリプトなので、これらのテストを書いていません。カスタムメイドのパーサーまたは単純で効率的な正規表現を作成することで、同じことができるかどうか疑問に思っていました。

このクエリは学習を目的としているため、次回は (できれば) より良い方法でこのような問題に取り組むことができます。

実装の詳細は気にしません(シェル、ルビー、python、perl;何でも構いません)。コードはそれほど重要ではありません。本当に、どうやってそれを行うかについていくつかのヒントが欲しいです。

4

2 に答える 2

3

これがご希望のものでなかったら申し訳ありませんが、あなたのペーストはもう入手できません。

これが簡単なヒントです。出力のさまざまな部分がタブで区切られています。

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

これで始められるはずです:

>>> 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']
于 2012-06-23T03:48:51.543 に答える
1

最良の解決策は、ソースから objdump をビルドし、出力を直接取得する python または他の言語の swig ラッパーを作成することです。文字列の解析でそれを行うことができますが、それはしばしばバグがあります(実装が不十分であると読んでください)。文字列の解析を適切に行うことは間違いなく可能です...これに依存するユーティリティがあります。

于 2011-09-02T12:38:58.047 に答える