реклама на сайте
подробности

 
 
> Использование asm библиотек в Си
scout
сообщение Oct 15 2009, 07:57
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 120
Регистрация: 4-01-06
Из: Москва
Пользователь №: 12 837



Ситуация такова.
Имеется "библиотека" написанная на асме.
Библиотека довольно большая, используется давно и уже отлажена.
Сегментирования кода и данных нет, тоесть все привязанно к абсолютным адресам.
Написана на mpasm, причем не мной.

Очень хотелось бы использовать ее совмесно с С компилятором. Как с наименьшими телодвижениями
это сделать? Беглый просмотр доки на aсм Иара и Хайтека определил различия с mpasm. Может проще
оформить все в виде настоящей библиотеки используя среду, где она была рождена, т.е Mplab?

Вторая задача состоит в выборе компилятора. Много работал с Иаром, все нравится, но
он поддерживает только PIC18 - не универсально(возможно придется еще работать с PIC16).
Хотя макроассемблер Иара мне больше понравился, чем Хайтека,
да и отладчик там имхо приятней, чем в MPLAB. Также нет информации насчет безглючности, оптимальности
и тд. Вроде как Хайтек все хвалят, про Иар ничего не слышал...

Есть еще одна непонятка. Как я понимаю С компилятор при вызове подпрограммы на асме не знает
какие регистры могут похерится(STATUS, BSR, FSR и тд), соответственно не заботится о их сохранении.
Получается что мне придется ковырять чужую библиотеку и дописывать сохранение контекста чтобы ее можно было полноценно использовать в С?


--------------------
То, что неясно, следует выяснить. То, что трудно творить, следует делать с великой настойчивостью.
Конфуций
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Zakhar
сообщение Nov 1 2009, 15:25
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 30-07-05
Пользователь №: 7 212



Ребята, добрый день. Здрасте всем. Бодаюсь второй день - очень хочется в MPLAB' е на С18 сделать asm-вставочку. На #asm ....... #endasm говорит : "синтакс ощибка". Чего хочет-то? И подскажите, где почитать про такие вставки? Что-то во всевозможных описаниях С никак не найду правил оформления такой вставки
Go to the top of the page
 
+Quote Post
Прохожий
сообщение Nov 1 2009, 16:32
Сообщение #3


Cундук
*****

Группа: Участник
Сообщений: 1 478
Регистрация: 13-11-06
Из: Ростов-на-Дону
Пользователь №: 22 269



Цитата(Zakhar @ Nov 1 2009, 18:25) *
Ребята, добрый день. Здрасте всем. Бодаюсь второй день - очень хочется в MPLAB' е на С18 сделать asm-вставочку. На #asm ....... #endasm говорит : "синтакс ощибка". Чего хочет-то? И подскажите, где почитать про такие вставки? Что-то во всевозможных описаниях С никак не найду правил оформления такой вставки

Вот цитата из документа DS51288J пункт 2.8.2.
Цитата
For example:
_asm
/* User assembly code */
MOVLW 10 // Move decimal 10 to count
MOVWF count, 0
/* Loop until count is 0 */
start:
DECFSZ count, 1, 0
GOTO done
BRA start
done:
_endasm
It is generally recommended to limit the use of inline assembly to a minimum. Any
functions containing inline assembly will not be optimized by the compiler. To write large
fragments of assembly code, use the MPASM assembler and link the modules to the C
modules using the MPLINK linker.

На всякий пожарный дополнительно выделил жирным предупреждение о злоупотреблениях.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 13th August 2025 - 22:59
Рейтинг@Mail.ru


Страница сгенерированна за 0.01398 секунд с 7
ELECTRONIX ©2004-2016