Войти
ПрограммированиеФорумОбщее

Ассемблерные вставки в GCC (комментарии) (3 стр)

Страницы: 1 2 3
#30
22:33, 30 апр. 2018

foxes
Один пример приводится в статье:
https://bootlin.com/blog/how-we-found-that-the-linux-nios2-memset… on-had-a-bug/

Ну и я вообще больше не о самом асме, а об интеграции его с кодом, который снаружи.
Если делать "naked функции", то там взаимодействия меньше, но нужно быть уверенным что оно вызовется ровно с тем calling conventions, которого ты ожидаешь.

Если речь о самом асме - ну бывает изредка мискомпиляция. Ну и иногда gas вместо детектирования ошибки программиста - генерирует хрень.


#31
(Правка: 22:47) 22:44, 30 апр. 2018

FordPerfect
> Один пример приводится в статье:
Ну это вообще особенности процессора от альтеры. Ну и в остальном вопрос опытности. Есть еще возможность писать чисто асм и его линковать в код с++, это подходит для x64, так как там вставки замочили, по сути тот же naked. А вот на эльбрусе его нету - беда печаль.

#32
22:59, 30 апр. 2018

foxes
Больше примеров:
https://godbolt.org/g/TiMmpy

Оба из статьи, кстати.

#33
(Правка: 1 мая 2018, 0:06) 23:18, 30 апр. 2018

FordPerfect
А дошло вычисления посередине инициализации данных, но это треш с++ из за инлайна. Я тоже могу привести пример без всякого asm где баланс стека восстановление/сохранение ломается.
В таком виде асм вставками лучше не пользоваться. Naked и через динамический указатель - для совместимости с разными платформами, ну в крайнем случае not_inline организовать.

Во, с этим атрибутом сразу все на свои места встает "__attribute__((noinline))". В общем с ассемблером в обоих случаях все как раз впоряде, как написано так и работает.

Страницы: 1 2 3
ПрограммированиеФорумОбщее