Вопрос

Мне было интересно, написал ли кто -то здесь/использует сценарий, который анализирует вывод objdump и извлекает из него опкоммы? У меня очень очень тривиальная реализация, но я ищу что -то лучшее.

Проблема, с которой я сталкиваюсь с этим сценарием это просто то, что он выполняет простой диапазон строк; Это скорее сценарий утилиты, и поэтому я не написал для них тесты. Мне было интересно, можно ли сделать то же самое путем написания индивидуального анализатора или простого, но эффективного регулярного выражения.

Этот запрос предназначен для обучения, так что я могу подходить к такой проблеме в (надеюсь) лучше в следующий раз.

Я не возражаю против специфики реализации (Shell, Ruby, Python, Perl; что угодно). Код даже не имеет большого значения, на самом деле, я бы хотел несколько намеков на то, как вы это сделаете.

Это было полезно?

Решение

Извините, если это не то, что вы хотели, но ваша паста больше не доступна.

Вот быстрый совет. Различные части вывода разделены вкладками.

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

Другие советы

Лучшим решением было бы построить Objdump из источника и сделать Python или другую языковую обертку Swig, которая получает выход непосредственно. Вы можете сделать это с помощью анализа строки, но это часто глюки (читается как плохо). Определенно можно правильно провести анализ строки ... У меня есть утилита, которая полагается на это.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top