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

 
 
> ARM ASM, Ассемблер для ARM, пример какой-нить
SanvaldYV
сообщение Jul 9 2007, 08:43
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 125
Регистрация: 21-03-07
Из: Санкт-Петербург
Пользователь №: 26 371



Всем добрый день!

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

Буду очень признателен за помощь.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
KRS
сообщение Jul 9 2007, 09:36
Сообщение #2


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(Юрий Санвальд @ Jul 9 2007, 12:43) *
Есть необходимость для контроллера LPC2103 написать на ассемблере набор функций для работы с нестандартными по размерам данными (40 и 48 бит)

IMHO можно смело использовать uint64_t и там где надо маску накладывать 0xFFFFFFFFFFFF или 0xFFFFFFFFFF
Go to the top of the page
 
+Quote Post
SanvaldYV
сообщение Jul 9 2007, 12:45
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 125
Регистрация: 21-03-07
Из: Санкт-Петербург
Пользователь №: 26 371



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


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

Да к тому же надо числа со знаком обрабатывать...

Сообщение отредактировал Юрий Санвальд - Jul 9 2007, 13:06
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 9 2007, 13:46
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



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

А причем тут IAR, это стандартные С99 унифицированные типы (как и int64_t ), описаны естественно в stdint.h. Вся работа штатная, как и со "старинным" double smile.gif.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
SanvaldYV
сообщение Jul 9 2007, 13:55
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 125
Регистрация: 21-03-07
Из: Санкт-Петербург
Пользователь №: 26 371



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



А! Все понял, просто смутило название uint64_t, не сразу впер, что это аналог doubl'а.
В stdint.h все нашел, он там назван int_fast64_t.

Сообщение отредактировал Юрий Санвальд - Jul 9 2007, 13:55
Go to the top of the page
 
+Quote Post
KRS
сообщение Jul 9 2007, 14:49
Сообщение #6


Профессионал
*****

Группа: Модераторы
Сообщений: 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 бита.
Go to the top of the page
 
+Quote Post



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

 


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


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