|
|
|
ARM ASM, Ассемблер для ARM, пример какой-нить |
|
|
|
Jul 9 2007, 08:43
|
Частый гость
Группа: Свой
Сообщений: 125
Регистрация: 21-03-07
Из: Санкт-Петербург
Пользователь №: 26 371
|
Всем добрый день! Есть необходимость для контроллера LPC2103 написать на ассемблере набор функций для работы с нестандартными по размерам данными (40 и 48 бит), раньше доводилось писать на асме только для AVR, поэтому хотелось бы изучить несколько примеров или просто описание с какими регистрами надо работать в асме для ARM. Описание инструкций нашел здесь - http://www.heyrick.co.uk/assembler/qfinder.html , но никаких примеров (ну даже самых простейших) у меня нет Буду очень признателен за помощь.
|
|
|
|
|
Jul 9 2007, 12:45
|
Частый гость
Группа: Свой
Сообщений: 125
Регистрация: 21-03-07
Из: Санкт-Петербург
Пользователь №: 26 371
|
Цитата(KRS @ Jul 9 2007, 13:36) IMHO можно смело использовать uint64_t и там где надо маску накладывать 0xFFFFFFFFFFFF или 0xFFFFFFFFFF Может это глупый вопрос - но как добавить поддержку этого типа в компилятор, в хелпе ИАР'а ничего о нем не нашел, где библиотеки фукций по работе с ним взять? Да к тому же надо числа со знаком обрабатывать...
Сообщение отредактировал Юрий Санвальд - Jul 9 2007, 13:06
|
|
|
|
|
Jul 9 2007, 13:55
|
Частый гость
Группа: Свой
Сообщений: 125
Регистрация: 21-03-07
Из: Санкт-Петербург
Пользователь №: 26 371
|
Цитата(zltigo @ Jul 9 2007, 17:46) А причем тут IAR, это стандартные С99 унифицированные типы (как и int64_t ), описаны естественно в stdint.h. Вся работа штатная, как и со "старинным" double . А! Все понял, просто смутило название uint64_t, не сразу впер, что это аналог doubl'а. В stdint.h все нашел, он там назван int_fast64_t.
Сообщение отредактировал Юрий Санвальд - Jul 9 2007, 13:55
|
|
|
|
|
Jul 9 2007, 14:49
|
Профессионал
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555
|
Цитата(Юрий Санвальд @ Jul 9 2007, 17:55) А! Все понял, просто смутило название uint64_t, не сразу впер, что это аналог doubl'а. В stdint.h все нашел, он там назван int_fast64_t. int_fast64_t тоже есть, но есть и int64_t - для ARM это одинаковые типы, но идеологически разные - fast64 может иметь больше 64 бит, например для ARM uint_fast8_t == uint32_t, и как локальные переменные, котортые будут находится в регистрах гораздо эффективнее использовать uint_fast8_t и где необходимо добавлять & 0xff. uint64_t - аналог double только по размеру в 64 бита.
|
|
|
|
|
Jul 9 2007, 14:57
|
Частый гость
Группа: Свой
Сообщений: 125
Регистрация: 21-03-07
Из: Санкт-Петербург
Пользователь №: 26 371
|
Цитата(zltigo @ Jul 9 2007, 18:51) Не только - там есть кроме и 'быстрого' и 'обычный' int64_t, и 'не менее, чем'. А что более предпочтительно с точки зрения быстродействия?
|
|
|
|
|
Jul 9 2007, 15:00
|
Гуру
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244
|
Цитата(Юрий Санвальд @ Jul 9 2007, 17:57) А что более предпочтительно с точки зрения быстродействия? Для ARM, полагаю, все равно, но если ходите сказать, что сделали все, что в Ваших силах, напишите fast
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|