Смешайте Ада со сборкой - PullRequest
1 голос
/ 03 июля 2011

Как я могу смешать код Ada со сборкой (собранной с помощью GAS)?

Я знаю, как связать Ada с C, но как я могу связать со сборкой? Я знаю, что gcc генерирует ассемблерный код из кода Ada, и из-за этого, я думаю, возможно сделать эту перекрестную ссылку.

Ответы [ 3 ]

2 голосов
/ 03 июля 2011

как я могу работать с двумя кодами?

Если вы используете GNAT на Intel x86, Inline Assembler содержит соответствующие примеры.

Добавление: опция -S позволяет "проверить сгенерированный код сборки". Это относится к Ada, C, C ++ и т. Д.

2 голосов
/ 03 июля 2011

Предположительно, вы бы скомпилировали сборку в объектный файл .o и передали это в качестве параметра вашему компилятору Ada.

1 голос
/ 05 июля 2011

Если вы хотите выполнять любые виды программирования на разных языках с помощью Ada, включая Ada / Assember, вам, вероятно, следует обратиться к документации вашего компилятора по Интерфейсные прагмы , в частности по разрешенным соглашениям о вызовах.

Например, Gnat обеспечивает Assembler соглашение для pragma import / export.

Как правило, вам нужно будет создать свой ассемблер, чтобы он действовал как подпрограмма, в которой используется соглашение о вызовах, совместимое с «соглашением», используемым в вашей прагме интерфейса.

Большинство компиляторов также поддерживают некоторые встроенные функции.сборка через пакет System.Machine_Code .Это позволяет смешивать небольшое количество ассемблера прямо в одних и тех же исходных файлах с вашим Ada.

...