Модераторы: PILOT, ManiaK, Mazzi
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ассемблер и Си, как совместить 
:(
    Опции темы
AndreyKO
Дата 2.12.2006, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 21.8.2006

Репутация: нет
Всего: нет



Привет Всем!
Вот вопрос: можно ли написать программу используя фунции и на Си и на ассемблере? Если да, то как?
p. s. пишу в Keil uVision...
PM MAIL   Вверх
Sartorius
Дата 2.12.2006, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: 1
Всего: 37



AndreyKO, без понятия что такое 
Цитата
Keil uVision... 
 , но есть два пути : либо ассемблерные вставки ( _asm, asm() для gcc) либо делай obj/lib/dll и подключай себе в С-ную прогу
PM MAIL ICQ   Вверх
Frolls
Дата 2.12.2006, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 27.10.2006

Репутация: нет
Всего: нет



делай вставки и спокойно работай
PM MAIL ICQ   Вверх
LessNik
Дата 4.12.2006, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 20.2.2006

Репутация: 1
Всего: 1



Кстати, у меня такая же проблема. Предположем, есть уже наработки на ассемблере для PIC16, куча функций на нем, так что ассемблерными вставками ну очень не красиво получается, а на Си переписывать долго и лениво. Работаю в MPLAB c компилятором от HITECH. Если что-то нужно создавать типа 
Цитата(Sartorius @  2.12.2006,  15:49 Найти цитируемый пост)
делай obj/lib/dll и подключай себе в С-ную прогу
, то прошу поподробнее объяснить.

PM MAIL   Вверх
Sartorius
Дата 4.12.2006, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: 1
Всего: 37



LessNik, ты просто сделай obj из того что есть. Для линкера кажется нужно PUBLIC для всех экспортируемых символов сделать... не помню точно.
Код

PUBLIC MyProc
PROC MyProc ...
...
ENDP


В С-ном проекте в установках компоновщика укажи связь с этим объектником и объявить свои ассемблерные функции как extern не забудь
PM MAIL ICQ   Вверх
LessNik
Дата 5.12.2006, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 20.2.2006

Репутация: 1
Всего: 1



Цитата(Sartorius @  4.12.2006,  13:52 Найти цитируемый пост)
 Для линкера кажется нужно PUBLIC для всех экспортируемых символов

Бублик не поможет, там GLOBAL писать нужно.
Вот просто для примера:

Си файл decoder.c :
Код

#include "htc.h"

extern void func1(void);
void main (void)
{
  func1();
}

asm файл asm_func.as:

Код

func1
    movlw 001
    return 
global func1
end 

Ошибка:

Цитата

Error[499]   : undefined symbol:
    _func1 (C:\!CurrentProject\KeeloqDecoder\decoder.obj)
BUILD FAILED: Tue Dec 05 14:20:38 2006


Вот линкер не понимает, что func1 находится в файле asm_func.as. Как объяснить? Оба файла находятся в Source Files 

Присоединённый файл ( Кол-во скачиваний: 8 )
Присоединённый файл  1.JPG 43,28 Kb
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

На данный раздел помимо Правил форума распространяются текже следующие правила:


  • Прежде чем создать тему воспользуйтесь поиском или посмотрите в faq. Возможно на форуме уже есть ответ на ваш или близкий к вашему вопрос.
  • В заголовке темы в квадратных скобках обозначьте используемое семейство микроконтроллера: [avr],[pic],[arm].
  • При создании темы с вопросом указывайте участок кода с ошибкой, версию компилятора, схемы подключения, fuse биты и прочие данные, которые помогут найти правильный ответ. Для форматирования текста программ используйте кнопку код.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Для флуда, просьб выполнить задание, поиска партнёров или исполнителей существуют свои разделы.
  • Если вы заметили несовместимое с правилами сообщение, то можете уведомить об этом модератора раздела нажав кнопку Репорт у соответствующего сообщения.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема »


 




[ Время генерации скрипта: 0.1085 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.