|
Keil и thumb ассемблер ARM, проблема с передачей и возвращением данный из си ф-ии в асм |
|
|
|
Mar 16 2011, 09:52
|

Местный
  
Группа: Участник
Сообщений: 255
Регистрация: 3-02-09
Из: Омск
Пользователь №: 44 323

|
Создал си проект программы имеющую асм подрограмму, при этом абсолютно не могу понять каким образом передавать данные подпрограмме и извлекать результат(что в какие регистры попадает и по каким правилам). Еще один момент это использование asm вставок в режиме Thumb (ни в какую не компилируется и не могу понять в чем загвоздка). Пробовал: asm("MOV R1, R0"); __asm("MOV R1, R0");Ошибка: использование inline ассемблера не возможно в режиме Thumb. main файл: #include <stdio.h> extern void strcopy(int d, int s); int main() { int srcstr = 3; int dststr = 1; /* dststr is an array since we’re going to change it */ strcopy(dststr,srcstr); return (0); }Функция strcopy находится в файле scopy.s с содержанием: PRESERVE8 AREA SCopy, CODE, READONLY EXPORT strcopy THUMB strcopy ; R0 points to destination string. ; R1 points to source string. MOV R1,#2 ; Load byte and update address. MOV R2,#5 ; Store byte and update address. BX lr ; Return. ENDКомпилируется, работает, однако значение srcstr не возвращается. Только начинаю работать со связкой асм+си пожэтому сильно не пинайте(или пните в сторону туда где чего почитать). Проект прилагаю.
Сообщение отредактировал drum1987 - Mar 16 2011, 09:53
Прикрепленные файлы
Blinky.rar ( 51.67 килобайт )
Кол-во скачиваний: 16
|
|
|
|
|
 |
Ответов
|
Mar 16 2011, 10:16
|
Гуру
     
Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136

|
Цитата(drum1987 @ Mar 16 2011, 12:52)  Только начинаю работать со связкой асм+си пожэтому сильно не пинайте(или пните в сторону туда где чего почитать). Почитать, как обычно, в руководстве пользователя: RealView Compiler User GuideRealView Compiler Reference GuideЦитата(drum1987 @ Mar 16 2011, 12:52)  Ошибка: использование inline ассемблера не возможно в режиме Thumb. Если Вы почитаете руководство, то обнаружите, что этот компилятор не поддерживает функцию inline assembler при генерации кода Thumb: Differences from previous versions of the ARM C/C++ compilersЦитата(drum1987 @ Mar 16 2011, 12:52)  Компилируется, работает, однако значение srcstr не возвращается. Поясните. Работает, но не работает? Что должно было произойти, и что на самом деле произошло?
|
|
|
|
|
Mar 16 2011, 10:37
|

Местный
  
Группа: Участник
Сообщений: 255
Регистрация: 3-02-09
Из: Омск
Пользователь №: 44 323

|
Цитата(scifi @ Mar 16 2011, 17:16)  Поясните. Работает, но не работает? Что должно было произойти, и что на самом деле произошло? Работает, но возвращаемую переменную я не знаю как словить  я хотел бы знать как в соответствие регистру поставить указатель на переменную передаваемую или возвращаемую подпрограмме. Доки щас прочитаю. На счет inline ассемблера понял.
Сообщение отредактировал drum1987 - Mar 16 2011, 10:40
|
|
|
|
Сообщений в этой теме
drum1987 Keil и thumb ассемблер ARM Mar 16 2011, 09:52 aaarrr Цитата(drum1987 @ Mar 16 2011, 12:52) Соз... Mar 16 2011, 10:00  scifi Цитата(drum1987 @ Mar 16 2011, 13:37) Раб... Mar 16 2011, 11:03   drum1987 Цитата(scifi @ Mar 16 2011, 18:03) Ну ё-м... Mar 16 2011, 12:32 RabidRabbit Вот например, что работает в Keil у меня:
CODE// 2... Mar 16 2011, 12:03 yashok Цитатавот например пример 6.1 по адресу http://www... Mar 16 2011, 12:50 drum1987 Цитата(yashok @ Mar 16 2011, 19:50) Функц... Mar 16 2011, 14:07  aaarrr Цитата(drum1987 @ Mar 16 2011, 16:57) Так... Mar 16 2011, 14:08 drum1987 изучил вопрос, но одна деталь осталась открытой:
к... Mar 18 2011, 08:36 aaarrr Цитата(drum1987 @ Mar 18 2011, 11:36) как... Mar 18 2011, 12:16  drum1987 Цитата(aaarrr @ Mar 18 2011, 19:16) Поясн... Mar 18 2011, 13:08 yashok Попробуйте написать функции с требуемым количество... Mar 18 2011, 09:23 yashok ЦитатаНаваял прогу, после выполнения асм функции M... Mar 18 2011, 13:23 aaarrr По порядку:
1. В своей подпрограмме вы не имеете п... Mar 18 2011, 13:26 drum1987 Спасибо. Сделал как написали все заработало
Но е... Mar 21 2011, 12:34 aaarrr Цитата(drum1987 @ Mar 21 2011, 15:34) Пол... Mar 21 2011, 13:49 scifi Цитата(drum1987 @ Mar 21 2011, 15:34) в и... Mar 21 2011, 14:04
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|