|
|
  |
inline asm в keil, как юзать? |
|
|
|
Oct 1 2007, 09:59
|
Группа: Новичок
Сообщений: 12
Регистрация: 4-07-07
Пользователь №: 28 883

|
собственно вопрос в описании темы пишу в тексте программы __asm { blablabla } компилирую, заливаю начинаю дебажить, и смотрю команды в дисасемблере на месте всего блока АСМ ставится один nop...а хотелось бы увидеть там команды, которые поставил в блоке.... также попутно вопрос, какие есть функции для отсчета времени ? (чтобы узнать сколько времени отрабатывает какая либо функция, например) плата mcbstr9
|
|
|
|
|
Oct 6 2007, 18:45
|
Группа: Новичок
Сообщений: 12
Регистрация: 4-07-07
Пользователь №: 28 883

|
вообщем в асме я не силен посмотрел хелпу в самом кейле ARM Code Example попробовал сделать простую функцию(на асме), которую можно было бы вызвать из другого файла(написан он на си) в проекте... но пока безуспешно... если есть у кого нибудь примеры и не жалко их выложить--сделайте это пожалуйста
а пока пойду сам поразбираюсь
upd: нашел примеры на сайте кейла компилятор дает ошибки например, на самой первой строке NAME func EXTERN DATA (value) -- test.s(1): error: A1157E: Syntax error following directive
Сообщение отредактировал ZMax - Oct 6 2007, 19:32
|
|
|
|
|
Oct 6 2007, 22:16
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(ZMax @ Oct 6 2007, 22:45)  компилятор дает ошибки например, на самой первой строке NAME func EXTERN DATA (value) -- test.s(1): error: A1157E: Syntax error following directive Ассемблер какой - RealView, судя по ошибке? Попробуйте такой пример: Код AREA codeA, CODE, READONLY
EXPORT sum
sum add r0, r0, r1 mov pc, lr
END вызов из C-модуля: Код extern int sum(int a, int b);
int main(void) { int a, b, c;
a = 1; b = 2; c = sum(a, b); printf("Result: %d\r\n", c); ... }
|
|
|
|
|
Oct 7 2007, 15:35
|
Группа: Новичок
Сообщений: 12
Регистрация: 4-07-07
Пользователь №: 28 883

|
Цитата(aaarrr @ Oct 7 2007, 02:16)  Ассемблер какой - RealView, судя по ошибке? Попробуйте такой пример: Код AREA codeA, CODE, READONLY
EXPORT sum
sum add r0, r0, r1 mov pc, lr
END вызов из C-модуля: Код extern int sum(int a, int b);
int main(void) { int a, b, c;
a = 1; b = 2; c = sum(a, b); printf("Result: %d\r\n", c); ... } спасибо надо ли до вызова функции сохранять все значения регистров, а потом восстанавливать их? или все это делается по умолчанию без лишних телодвижений?
|
|
|
|
|
Oct 8 2007, 10:28
|
Группа: Новичок
Сообщений: 12
Регистрация: 4-07-07
Пользователь №: 28 883

|
всем огромное спасибо!!!
как можно узнавать время, которое работала функция?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|