Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > C/C++: Общие вопросы > Есть ли дружба С++ с Ассемблером по Стандарту? |
Автор: JoeUser 26.06.20, 13:58 |
Всем привет! Простой вопрос. Есть хотелки в следующих ипостасях: 1) Реализация и оформление статического метода на gas (в синтаксисе Intel) 2) Реализация и оформление метода на gas (в синтаксисе Intel) 3) Реализация и оформление виртуального метода на gas (в синтаксисе Intel) 4) Реализация и оформление статического метода на fasm и объявление, и внешняя линковка 5) Реализация и оформление метода на fasm и объявление, и внешняя линковка 6) Реализация и оформление виртуального метода на fasm и объявление, и внешняя линковка Вот такое хочется! Я понимаю, если это зависит от реализации ... Тогда интересуют реализации: 1) GCC/Clang/MinGW 2) Компилер от 2017-2019 студии 3) Компилер от Intel C++ Возможно кто-то вспомнит про встроенный асм студии - его право. Я его никогда не видел (может его вааще нет) Если есть инфа - продолжим о способах передачи параметров и получении значения(й) по возврату. |
Автор: Qraizer 26.06.20, 14:25 |
Подобные вещи описываются в ABI соответствующего компилятора и отчасти ОСи. По Стандарту лишь ключевое слово asm(строковый литерал);, но всё, что более глубоко, является implementation specified. А вот ABI как раз и должно описывать всё то, что тебя интересует: передача параметров, структура стековых фреймов, рабочие регистры итп. |
Автор: JoeUser 26.06.20, 14:28 |
Qraizer, умаляю!!! Дай наколку на доки в виде ссылки - хотя бы на п.4-5-6 для любого компилера (GCC/Clang в фаворе) Добавлено ЗЫ: Оси, которые интересны Win/FreeBSD/Linux/OsX (в порядке интереса), архитектура строго Intel/AMD64. Для ARM'мов я не дорос есчо, PowerPC-перерос не застав. |
Автор: Pavia 27.06.20, 08:34 |
JoeUser Вопрос понятный. Ответ такой же всё это зависит от компилятора и у каждого свои заморочки. А ещё это плохо документировано. Самое простое решение собрать код с трансляцией кода Си в Асм. И посмотреть как компилятор оформляет код. Цитата Если есть инфа - продолжим о способах передачи параметров и получении значения(й) по возврату. https://www.agner.org/optimize/calling_conventions.pdf Обязательно прочитайте главу про Name mangling Добавлено Вот тут не плохая подборка спецификаций ABI https://en.wikipedia.org/wiki/Executable_an...#Specifications |
Автор: JoeUser 27.06.20, 08:46 |
Pavia, пасип! |