Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.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++

Возможно кто-то вспомнит про встроенный асм студии - его право. Я его никогда не видел (может его вааще нет) :lol:
Если есть инфа - продолжим о способах передачи параметров и получении значения(й) по возврату.

Автор: Qraizer 26.06.20, 14:25
Подобные вещи описываются в ABI соответствующего компилятора и отчасти ОСи. По Стандарту лишь ключевое слово asm(строковый литерал);, но всё, что более глубоко, является implementation specified. А вот ABI как раз и должно описывать всё то, что тебя интересует: передача параметров, структура стековых фреймов, рабочие регистры итп.

Автор: JoeUser 26.06.20, 14:28
Qraizer, умаляю!!! Дай наколку на доки в виде ссылки - хотя бы на п.4-5-6 :wall: для любого компилера (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, пасип!

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)