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

 
 
> inline asm в keil, как юзать?
ZMax
сообщение Oct 1 2007, 09:59
Сообщение #1





Группа: Новичок
Сообщений: 12
Регистрация: 4-07-07
Пользователь №: 28 883



собственно вопрос в описании темы
пишу в тексте программы __asm { blablabla }
компилирую, заливаю
начинаю дебажить, и смотрю команды в дисасемблере
на месте всего блока АСМ ставится один nop...а хотелось бы увидеть там команды, которые поставил в блоке....
также попутно вопрос, какие есть функции для отсчета времени ? (чтобы узнать сколько времени отрабатывает какая либо функция, например)
плата mcbstr9
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ZMax
сообщение Oct 6 2007, 18:45
Сообщение #2





Группа: Новичок
Сообщений: 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
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 6 2007, 22:16
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 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);
    ...
}
Go to the top of the page
 
+Quote Post
ZMax
сообщение Oct 7 2007, 15:35
Сообщение #4





Группа: Новичок
Сообщений: 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);
    ...
}

спасибо



надо ли до вызова функции сохранять все значения регистров, а потом восстанавливать их?
или все это делается по умолчанию без лишних телодвижений?
Go to the top of the page
 
+Quote Post



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

 


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


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