Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ARM ASM
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
SanvaldYV
Всем добрый день!

Есть необходимость для контроллера LPC2103 написать на ассемблере набор функций для работы с нестандартными по размерам данными (40 и 48 бит), раньше доводилось писать на асме только для AVR, поэтому хотелось бы изучить несколько примеров или просто описание с какими регистрами надо работать в асме для ARM.
Описание инструкций нашел здесь - http://www.heyrick.co.uk/assembler/qfinder.html ,
но никаких примеров (ну даже самых простейших) у меня нет sad.gif

Буду очень признателен за помощь.
jasper
Пример реализации БПФ на армовском асме:
http://www.platan.ru/shem/pdf/bpf.pdf smile.gif
sqrt
Цитата(Юрий Санвальд @ Jul 9 2007, 12:43) *
Описание инструкций нашел здесь - http://www.heyrick.co.uk/assembler/qfinder.html ,

На родном сайте все полнее будет:
http://www.arm.com/documentation/Instruction_Set/index.html

Для вдумчивых:
http://www.arm.com/community/university/eulaarmarm.html
SanvaldYV
Jasper, Sqrt, премного благодарен!
KRS
Цитата(Юрий Санвальд @ Jul 9 2007, 12:43) *
Есть необходимость для контроллера LPC2103 написать на ассемблере набор функций для работы с нестандартными по размерам данными (40 и 48 бит)

IMHO можно смело использовать uint64_t и там где надо маску накладывать 0xFFFFFFFFFFFF или 0xFFFFFFFFFF
SanvaldYV
Цитата(KRS @ Jul 9 2007, 13:36) *
IMHO можно смело использовать uint64_t и там где надо маску накладывать 0xFFFFFFFFFFFF или 0xFFFFFFFFFF


Может это глупый вопрос - но как добавить поддержку этого типа в компилятор, в хелпе ИАР'а ничего о нем не нашел, где библиотеки фукций по работе с ним взять?

Да к тому же надо числа со знаком обрабатывать...
zltigo
Цитата(Юрий Санвальд @ Jul 9 2007, 15:45) *
хелпе ИАР'а ничего о нем не нашел, где библиотеки фукций по работе с ним взять?

А причем тут IAR, это стандартные С99 унифицированные типы (как и int64_t ), описаны естественно в stdint.h. Вся работа штатная, как и со "старинным" double smile.gif.
SanvaldYV
Цитата(zltigo @ Jul 9 2007, 17:46) *
А причем тут IAR, это стандартные С99 унифицированные типы (как и int64_t ), описаны естественно в stdint.h. Вся работа штатная, как и со "старинным" double smile.gif.



А! Все понял, просто смутило название uint64_t, не сразу впер, что это аналог doubl'а.
В stdint.h все нашел, он там назван int_fast64_t.
KRS
Цитата(Юрий Санвальд @ 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 бита.
zltigo
Цитата(Юрий Санвальд @ Jul 9 2007, 16:55) *
В stdint.h все нашел, он там назван int_fast64_t.

Не только - там есть кроме и 'быстрого' и 'обычный' int64_t, и 'не менее, чем'.
SanvaldYV
Цитата(zltigo @ Jul 9 2007, 18:51) *
Не только - там есть кроме и 'быстрого' и 'обычный' int64_t, и 'не менее, чем'.


А что более предпочтительно с точки зрения быстродействия?
zltigo
Цитата(Юрий Санвальд @ Jul 9 2007, 17:57) *
А что более предпочтительно с точки зрения быстродействия?

Для ARM, полагаю, все равно, но если ходите сказать, что сделали все, что в Ваших силах, напишите fast smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.