Отговори на тема  [ 5 мнения ] 
C & ASM заедно 
Автор Съобщение
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Вто Май 23, 2006 4:56 pm
Мнения: 113
Местоположение: Варна
Мнение C & ASM заедно
Заглавието на темата не е много подходящо ама не се сетих за друго. Както и да е, ще опиша какво ми трябва.
Имам една програма писана на ASM, която е доста дълга. Искам към нея да вмъкна една функция, която обаче е писана на C. Вероянтно при компилирането може да се укажа нещо на линкера да свърже двата файла ама хич не ми е ясно как става и дали изобщо може да стане. А да пренапиша ASM програмата на C e много трудно, щото първо е доста голяма, и второ нямам толкова време на разположение. Дайте някаква идея как става номера.

Компилатора, който ползвам е Hi-tech PICC-18 v.9.50 a процесора е 18F458, ако има някакво значение.


Пет Окт 06, 2006 4:01 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Ами може да си компилираш отделно функцията да вземеш листинга който ти генерира компилатора за нея и да си го сложиш в асемблерския код.

Има и друг подход но е по сложен.


Пет Окт 06, 2006 5:11 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Вто Май 23, 2006 4:56 pm
Мнения: 113
Местоположение: Варна
Мнение 
Nikola Kirov написа:
Ами може да си компилираш отделно функцията да вземеш листинга който ти генерира компилатора за нея и да си го сложиш в асемблерския код.


Това става за по-прости функции. При мен функцията прави операции с числа с плаваща запетая и кода става доста обемен, а и доста разпръснат. Отделно че извиква функции, които са дефинирани в различни библиотеки, трябва да компилирам и библиотеките и т.н... много играчка става и се съмнявам, че ще стане без грешки.

Цитат:
Има и друг подход но е по сложен.


Слушам :)


Пет Окт 06, 2006 5:20 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Явно ще се зориш.
Не съм правил такова нещо с Hi-Tech -а. Но при IAR става като си сложиш в проекта и асемблерския код и C кода. И компилацията на асемблерския сорс се прави с асемблера на IAR. Импортваш C функцията и си я ползваш в асемблера.
Но има преправяне на това онова за асемблерския сорс заради разлика в някои дреболии между Microchip i IAR асм компилаторите.

IAR си има един pdf,Mising C and Asember Code и там детаилно е описано кое как се прави. Но това е за IAR. Подобен трябва да е подхода и при Hi-Tech.


Пет Окт 06, 2006 5:49 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 24, 2005 11:41 pm
Мнения: 1049
Местоположение: Pz
Мнение 
Заради всичко описано до тука се прави точно обратно - пише се на С и се вмъкват функции на асемблер. Това (обратното) дето си решил да направиш, ако стане, ще стане със 1000 (не 300) зора... Най-малкото с което трябва да се съобразиш са адресните пространства. При Hi-Tech директивите за управление на паметта са малко шибани :-) Компилни си една функция и погледни в листинга къде ти е разположил променливи, константи и кода и няма да е само твоята функция там - ще има и още...


Пет Окт 06, 2006 7:30 pm
Профил ICQ
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 5 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 2 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни