|
Как сделать смешаный проект?, С *.c и *.asm файлами |
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 14)
|
Apr 30 2008, 05:38
|

Профессионал
    
Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357

|
Цитата(MrYuran @ Apr 30 2008, 09:01)  А в чём проблема? Проблема в том, что если я тупо включаю в проект .asm файл, то он не транслируется. Цитата(MrYuran @ Apr 30 2008, 09:01)  посмотрите примеры из состава GCC, заодно и мэйк файл готовый можно взять Да где его найти-то? Все что там есть - это demo, largedemo и stdiodemo. И вообще, как-то туго у них с документацией: в gcc.pdf описан чисто С, а в avr-libc-user-manual - стандартные библиотеки. Где описание всего того, что индивидуально именно для AVR? В частности, calling convention - без него нет смысла писать ассемблерные функции.
|
|
|
|
|
Apr 30 2008, 06:38
|
Знающий
   
Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484

|
Цитата(777777 @ Apr 30 2008, 09:38)  Где описание всего того, что индивидуально именно для AVR? В частности, calling convention - без него нет смысла писать ассемблерные функции. В avr-libc-user-manual. Анатолий. Цитата(777777 @ Apr 30 2008, 09:38)  Да где его найти-то? Все что там есть - это demo, largedemo и stdiodemo. Есть еще asmdemo.
|
|
|
|
|
Apr 30 2008, 09:30
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(777777 @ Apr 30 2008, 12:19)  Подозреваю что это транслятор, который берет промежуточный ассемблерный файл, который получается после компиляци C-файла. после компиляции с-файла получается объектный файл, не имеющий ничего общего с ассемблером Цитата PS. А без мейкфайла, непосредственно в IDE нельзя указать что файл является ассемблерным? Какая ИДЕ? мэйк-файл нужен по любому, только формируете его либо вы (как вам надо), либо оболочка (как посчитает нужным) на ассемблерность файла указывает его расширение (.s)
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Apr 30 2008, 09:59
|

Профессионал
    
Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357

|
Цитата(MrYuran @ Apr 30 2008, 13:30)  после компиляции с-файла получается объектный файл, не имеющий ничего общего с ассемблером Не факт. Помнится, в юниксе на ЭВМ  СМ-4 c-шный компилятор создавал сначала ассемблерный файл, причем именно с расширением .s, а из него уже получал объектный. Скоре всего gcc тоже генерирует сначала ассемблерный файл и сразу передает его транслятору. Цитата(MrYuran @ Apr 30 2008, 13:30)  Какая ИДЕ? мэйк-файл нужен по любому, только формируете его либо вы (как вам надо), либо оболочка (как посчитает нужным) Да это понятно. Я и имел в виду - генерировать его из ИДЕ с помощью флажков. Впрочем, мне это уже удалось Цитата(MrYuran @ Apr 30 2008, 13:30)  на ассемблерность файла указывает его расширение (.s) Увы. Кроме того, удалось догадаться о наличии в этом ассемблере директивы .global
|
|
|
|
|
Apr 30 2008, 10:34
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(777777 @ Apr 30 2008, 12:19)  но главная проблема, которую я увидел - ассемблерный файл транслируется вовсе не AVR-овским ассемблером. Хм... а каким? Возможно, вы имели ввиду атмеловский AvrAssembler? Так и не должен - у avr-gcc есть собственный ассемблер, с собственным синтаксисом. Документация в Doc/binutils/as. Цитата(777777 @ Apr 30 2008, 12:59)  Не факт. Да, это не факт. Это больше, чем факт - так оно и есть на самом деле. gcc в обычном режиме передает ассемблерный текст от компилятора к ассемблеру через pipe, т.е. файл на диске не создается. Вы можете попросить его создать такой файл, но это уже из другой оперы. А выходом уже ассемблера является объектный файл, но поскольку промежуточное ассемблирование вызывается неявно, снаружи выглядит так, что выходом компилятора является объектный файл. Поправьте меня кто-нибудь, если я не прав.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Apr 30 2008, 11:23
|

Профессионал
    
Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357

|
Цитата(Сергей Борщ @ Apr 30 2008, 14:34)  Хм... а каким? Возможно, вы имели ввиду атмеловский AvrAssembler? Ну да, конечно. Цитата(Сергей Борщ @ Apr 30 2008, 14:34)  Так и не должен - у avr-gcc есть собственный ассемблер, с собственным синтаксисом. И наверное с собственным форматом объектных файлов. Цитата(Сергей Борщ @ Apr 30 2008, 14:34)  Документация в Doc/binutils/as. О, вот это ценная вещь. И директива .global там действительно есть
|
|
|
|
|
May 3 2008, 20:23
|

Местный
  
Группа: Свой
Сообщений: 414
Регистрация: 8-06-06
Пользователь №: 17 897

|
Пишу так Код EXPORT Test EXTERN func1
AREA |.text|, CODE, READONLY
Test LDR R0, =func1 BX R0
END Линкер говорит что не может найти func1 , хотя вот так Код EXPORT Test EXTERN _Z5func1v
AREA |.text|, CODE, READONLY
Test LDR R0, =_Z5func1v BX R0
END работает, но это бред. Как правильно? Компилер RV
--------------------
Курильщик даташитов со стажем
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|