Возникла необходимость совместить язык программирования си++ и ассемблер для написания программы для мк. attiny2313, первой попыткой был avrstudio4.18 там доступны два компилятора: первый- AtmelAVRAssembler, второй-AVR GCC(WinAvr), асcемблер и си++ соответственно но их можно использовать только по отдельности, тоесь писать только на ассемблере в первом случае, и во втором только на си, знаю что можно интегрировать код асм
в код си++ командами #asm..код..#asmend(вроде...) но попытка не увенчалась успехом, вернее две попытки, вторая- я попытался интегрировать код на асме в среде CVAVR тоже, при настройке портов возникла ошибка-уже при линковке(Shift+f9) как я понял, компилятор не понял команду out Portd, R19;( предварительно в регистр записав значение) еще думал над тем как интегрировать код си++ непосредственно в асм. может быть прописав как функцию(си++) и вызывать в начале кода(асм), типа того.. .include "c++.h":) Если есть предложения пожалуйста дайте разъяснительный ответ. С большим уважением Алексей.
Ассемблер и c++, совместное использование.
- warlock114
- Родился
- Сообщения: 5
- Зарегистрирован: Вт апр 07, 2009 06:28:24
- Реклама
- DX168B
- Друг Кота
- Сообщения: 4468
- Зарегистрирован: Вс янв 24, 2010 19:19:52
- Откуда: Главный Улей России (Moscow)
- Контактная информация:
Re: Ассемблер и c++, совместное использование.
По тому что компилятор не понял, что такое PortD.warlock114 писал(а):как я понял, компилятор не понял команду out Portd, R19;
Попробуйте записать вместо PortD его физический адрес(значение). Адрес можно узнать из АСМовских заголовочников(например для тини 2313 будет файл tn2313def.inc) под конкретный контроллер. Мне пока не приходилось делать ассемблерных вставок с Сишных кодах, по этому не знаю, сработает или нет.
I am DX168B and this is my favourite forum on internet!
- andrey_artemov
- Встал на лапы
- Сообщения: 136
- Зарегистрирован: Сб авг 15, 2009 21:26:50
- Откуда: Пенза
- Контактная информация:
Re: Ассемблер и c++, совместное использование.
Как это не приходилось - а как-жеDX168B писал(а):Мне пока не приходилось делать ассемблерных вставок с Сишных кодах, по этому не знаю, сработает или нет.
Код: Выделить всё
#asm("sei")
- DX168B
- Друг Кота
- Сообщения: 4468
- Зарегистрирован: Вс янв 24, 2010 19:19:52
- Откуда: Главный Улей России (Moscow)
- Контактная информация:
Re: Ассемблер и c++, совместное использование.
Ну это да, а вот работать с периферией и портами при помощи вставок не приходилось.
В Сях под AVR я ещё новенький, а вот АСМ уже как самого себя знаю.
C++ для ПК вроде знаю нормально. Писал всякую хрень под MFC и консольные приложения в Visual Studio.
Вот что я нарыл в заголовочнике тн2313й:
В Сях под AVR я ещё новенький, а вот АСМ уже как самого себя знаю.
C++ для ПК вроде знаю нормально. Писал всякую хрень под MFC и консольные приложения в Visual Studio.
Вот что я нарыл в заголовочнике тн2313й:
Значит попробуй записать так:tn2313def.inc писал(а): .equ PORTB = 0x18
Код: Выделить всё
out 0x18, r19
I am DX168B and this is my favourite forum on internet!

