136 / 48 / 2
Регистрация: 31.07.2014
Сообщений: 238
1

Зависит ли производительность приложения от версии ABI?

22.10.2014, 12:40. Показов 1332. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет народ, такой вопрос: начал тут копаться в командах GCC и наткнулся на -fabi-version= n, где n[0;8]. Почитал что такое ABI - это набор реализаций механизмов, объявленных стандартом, так вот, влияет ли версия ABI на размер или производительность конечного прилохения?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.10.2014, 12:40
Ответы с готовыми решениями:

От чего зависит производительность работы компьютера?
От чего зависит производительность работы компьютера?

(По ORACLE)Сильно ли зависит производительность и размер от разных числовых полей в таблице?
(По ORACLE)Сильно ли зависит производительность и размер от разных числовых полей в таблице? Смысл...

Как влияет на производительность, если HT будет версии 1.0 вместо 3.0?
Как влияет на производительность, если HT будет версии 1.0 вместо 3.0 + оператива 2гб ддр2 800mhz?

Приложение для работы с Excel которое не зависит от версии Excel
Как сделать приложение для работы с Excel которое не зависит от версии Excel установленой на...

1
18822 / 9826 / 2401
Регистрация: 30.01.2014
Сообщений: 17,260
22.10.2014, 13:52 2
Лучший ответ Сообщение было отмечено NoobsEnslaver как решение

Решение

Цитата Сообщение от NoobsEnslaver Посмотреть сообщение
Почитал что такое ABI - это набор реализаций механизмов, объявленных стандартом
ABI - это Application Binary Interface. Понятие объемлющее. Вот тебе пример:
Ты написал dll, приложил к ней заголовочный файл (функции в заголовочном файле - это API, Application Program Interface).
потом ты написал приложение, с использованием этой dll. После того, как приложение собрано между ним и dll возникает понятие ABI: вызовы, данные (типы, набор полей в структурах, выравнивание и т.д.), после компиляции образуют ABI. Приложение, которое ты написал "закладывается" на определенный порядок передачи аргументов в функции, типы данных и их размер, и т.д. Исходя из этого, регистры и память обретают определенный смысл, смещения делаются на те величины, которые соответствуют желаемому результату и т.д.
Т.е. и dll и приложение ждут определенных данных в регистрах и памяти и предоставляют определенные данные в регистры и память - вследствие этого, могут взаимодействовать. Это если грубо.

Теперь к GCC. Как известно, это далеко не новый продукт. У него богатая история. И ABI - менялся с течением времени (потому что менялся API) т.е. внутренние функции, генерируемые компилятором (например реализация исключений), меняли название. Меняли название внутренние функции стандартной библиотеки, менялось количество полей в библиотечных структурах (посмотри хотя бы содержимое структуры FILE за разный промежуток времени), добавлялись параметры, менялся способ декорации имен функций в С++ и т.д. Например gcc 2.95 совершенно подругому, чем 3 или gcc 4.х.х, декорирует имена для С++. Так вот, этот флаг нужен для того, чтобы попытаться подружить версии бинарников, написанные в разные временные промежутки, с использованием разных версий gcc и, следовательно, с разным ABI.
Ну, например, (гипотетическии) версия ABI (а) могла класть параметры в стек c использованием смещения esp каждый раз при добавлении нового параметра (скажем, командой push), а версия ABI (b) смещала esp сразу на нужное значение с учетом количества и размера всех параметров, т.е. один раз после факта помещения их на стек. Вот такие вещи и пытается разруливать эта опция.

Влияет ли ABI на скорость? Разве только косвенно. Причем влиять может как в минус так и в плюс. Но этот флаг, повторюсь, не для оптимизации, он для совместимости.
2
22.10.2014, 13:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.10.2014, 13:52
Помогаю со студенческими работами здесь

Как стиль приложения зависит от смены значения android:minSdkVersion?
Обьясните "на пальцах" как стиль приложения зависит от смены <uses-sdk android:minSdkVersion="3"...

Падает производительность приложения
Подскажите пожалуйста. Я делаю приложение на WPF. Приложение похоже чем-то на интернет магазин,...

Base.OnPaint и производительность приложения
Делаю кастом кнопку, переопределяю метод OnPaint, в котором рисую нужный бэкграунд, текст и...

Что происходит с ABI при наследовании?
Привет. В общем столкнулся в проекте со странной проблемой, похожей на проблему с ABI. Вот в чем...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru