Предположим, что я создал программу на С ++ и скомпилировал ее. Теперь у вас есть код сборки. Тогда, если я использую код сборки в asm()
, будет ли он иметь тот же результат? Если это так, для чего мы можем его использовать?Вставить скомпилированную встроенную сборку обратно в C++
ответ
Большинство компиляторов обычно имеют опцию, которая позволяет создать полный список агрегатов, однако нет необходимости просто вставлять сгенерированный код сборки в asm ("").
Использование списка сборки, как правило, заключается в понимании того, как работает компилятор, чтобы написать код на C/C++ таким образом, чтобы полученный код сборки был 1. эффективный во времени. 2. экономичный в памяти.
В случае использования высоких уровней оптимизации компилятора, во время или памяти, полученный код, как правило, 3. немного отличается в его логика, чем код оригинального C/C++ 4. может содержать ошибки. Полный список помогает понять связь между исходным кодом C/C++ с созданным кодом сборки.
- В процессорах ограничено количество памяти кода и данных. Возможно, важно увидеть в сборке сборку, размеры кода памяти и распределения данных.
- В случае реализации алгоритма, такого как БПФ, который обычно требует определенных выравниваний по адресам данных, может быть важно увидеть, что эти выравнивания также выполняются.
В качестве сводной информации о сборке помогает работать с C/C++ и поддерживать (насколько это возможно) эффективность во времени и в памяти, источники, которые могут быть ограничены во встроенной среде.
Лист сборки может быть позже собран для создания объектного кода, как это сделано в основном непосредственно компилятором.
Это не будет то же самое. Переменные, procs и многое другое будут заменены смещениями, код может быть оптимизирован и т. Д. Но вы можете использовать его для внесения изменений в поток или логику (например, вирус). –
Итак, некоторые, некоторые нет? –
Проблема в том, что asm - это не единственное, что нужно для воспроизведения программы. Вам также нужны те же разделы, смещения кода, привязка ... которые не могут быть включены в список разборки. – ElderBug