Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

C & ASM заедно
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=3026
Страница 1 от 1

Автор:  mndsl [ Пет Окт 06, 2006 4:01 pm ]
Заглавие:  C & ASM заедно

Заглавието на темата не е много подходящо ама не се сетих за друго. Както и да е, ще опиша какво ми трябва.
Имам една програма писана на ASM, която е доста дълга. Искам към нея да вмъкна една функция, която обаче е писана на C. Вероянтно при компилирането може да се укажа нещо на линкера да свърже двата файла ама хич не ми е ясно как става и дали изобщо може да стане. А да пренапиша ASM програмата на C e много трудно, щото първо е доста голяма, и второ нямам толкова време на разположение. Дайте някаква идея как става номера.

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

Автор:  Nikola Kirov [ Пет Окт 06, 2006 5:11 pm ]
Заглавие: 

Ами може да си компилираш отделно функцията да вземеш листинга който ти генерира компилатора за нея и да си го сложиш в асемблерския код.

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

Автор:  mndsl [ Пет Окт 06, 2006 5:20 pm ]
Заглавие: 

Nikola Kirov написа:
Ами може да си компилираш отделно функцията да вземеш листинга който ти генерира компилатора за нея и да си го сложиш в асемблерския код.


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

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


Слушам :)

Автор:  Nikola Kirov [ Пет Окт 06, 2006 5:49 pm ]
Заглавие: 

Явно ще се зориш.
Не съм правил такова нещо с Hi-Tech -а. Но при IAR става като си сложиш в проекта и асемблерския код и C кода. И компилацията на асемблерския сорс се прави с асемблера на IAR. Импортваш C функцията и си я ползваш в асемблера.
Но има преправяне на това онова за асемблерския сорс заради разлика в някои дреболии между Microchip i IAR асм компилаторите.

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

Автор:  Gogo [ Пет Окт 06, 2006 7:30 pm ]
Заглавие: 

Заради всичко описано до тука се прави точно обратно - пише се на С и се вмъкват функции на асемблер. Това (обратното) дето си решил да направиш, ако стане, ще стане със 1000 (не 300) зора... Най-малкото с което трябва да се съобразиш са адресните пространства. При Hi-Tech директивите за управление на паметта са малко шибани :-) Компилни си една функция и погледни в листинга къде ти е разположил променливи, константи и кода и няма да е само твоята функция там - ще има и още...

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/