Редактирование блока на Mac OS X

Я в настоящее время демонтирую Мужественный исполняемый файл (исполняемый файл работает на Mac OS X, чтобы быть конкретным) в IDA Pro на окнах. У меня есть одна инструкция, которую я хочу изменить, но не кажется, что IDA Pro позволяет Вам делать это. Так, я пытался использовать otool на OS X для дампа блока (который он делает прекрасный). Однако после редактирования блока в otool, я пытался повторно собрать его использование as . Это приветствует меня набором ошибок как Junk character 43 (+). Что самый легкий путь состоит в том, чтобы изменить просто единственную инструкцию в Мужественном двоичном файле на Mac OS X?

9
задан Community 23 May 2017 в 02:11
поделиться

1 ответ

Вы используете std :: vector of bool, и это не то, что вы думаете!

vector of bool - это незаконченная дочерняя специализация шаблона, которая никогда не должна была существовать и на самом деле хранит 1 bool в каждом бите. Доступ к нему более сложен из-за логики маскирования и сдвига, поэтому он определенно будет несколько медленнее.

Щелкните здесь, чтобы получить информацию о векторе bool.

Кроме того, вы можете запускать неоптимизированную сборку (почти наверняка с учетом раз вы указали, 27 секунд возмутительно для 4 миллионов итераций). Стандартная библиотека шаблонов очень сильно полагается на оптимизатор, выполняя такие вещи, как вызов встроенных функций и удаление временных файлов. Отсутствие этой оптимизации приводит к особенно сильному снижению производительности для вектора bool, потому что он должен возвращать прокси-объект, когда вы индексируете его, потому что вы можете ' t принимает адрес бита, поэтому operator [] не может вернуть ссылку.

Щелкните здесь, чтобы получить дополнительную информацию о проксируемых контейнерах (последняя половина касается вектора типа bool)

Кроме того, многие реализации STL имеют полезные отладочные биты, которые не являются частью стандарта, которые помогают выявлять ошибки, но действительно снижают производительность. Вы захотите убедиться, что они отключены в вашей оптимизированной сборке.

После того, как вы включите оптимизатор, установили правильные настройки (т.е. не включена отладка STL) и фактически тестируете одно и то же в обоих циклах, вы почти не увидит разницы.

Мне пришлось сделать ваш цикл намного больше, чтобы протестировать его на моей машине, но вот две сборки вашего вектора цикла bool на моей машине,

4
ответ дан 3 November 2019 в 07:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: