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

 
 
 
Reply to this topicStart new topic
> Команда SSAT в STM32, Есть ли в Cortex-M3 от STM команды "насыщательной" арифметики?
Dot
сообщение Apr 14 2014, 12:22
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 13-10-05
Пользователь №: 9 595



Читаю описание -- в Cortex-M3 команда SSAT вроде присутствует.
При попытке ввести мнемонику, Keil синтаксис не подсвечивает, при компиляции -- выдает ошибку.

Аналогично с командой MOVW.

Что может быть не так?

(STM32F100R, uVision4)
Go to the top of the page
 
+Quote Post
scifi
сообщение Apr 14 2014, 12:50
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Dot @ Apr 14 2014, 16:22) *
при компиляции -- выдает ошибку.

Исходный код и ошибку - в студию.
Go to the top of the page
 
+Quote Post
Aleksandr Barano...
сообщение Apr 14 2014, 16:24
Сообщение #3


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

Группа: Участник
Сообщений: 169
Регистрация: 31-08-05
Из: New York
Пользователь №: 8 118



Попробовал на STM32F205:
Код
UINT16 ProcessSpecialCommand()
{
    UINT16 res = 0;
    asm("SSAT.W R1, #16, R0  \n");
    return res;  
  
}
Компилятор - IAR610

Сообщение отредактировал IgorKossak - Apr 15 2014, 08:00
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!


--------------------
ASB
Go to the top of the page
 
+Quote Post
Dot
сообщение Apr 15 2014, 13:16
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 13-10-05
Пользователь №: 9 595



Отбой.
Так и не понял, в чем был косяк, но сегодня код прекрасно откомпилировался.

Тем не менее, Keil для этих команд синтаксис так и не подсвечивает:







PS.
Вау, писаю от счастья, одна команда заменяет четыре!

Для будущих грабленаступателей:
хотя USAT заявлена как беззнаковая, исходный операнд считается знаковым! Т.е. число, старший бит которого =1, будет обрезаться в 0. Например 0xFFFFFFFF (т.е. -1) после операции станет 0.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Apr 15 2014, 16:50
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



а сколько таких команд влезет в 512 кБайтную флэшку... мочи не хватит и кипятильник сдохнет...
нафига вам это? компилятор пишите?
Go to the top of the page
 
+Quote Post
Uuftc
сообщение Apr 16 2014, 14:08
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 234
Регистрация: 3-10-04
Из: Кукуево-Дальнее
Пользователь №: 767



Цитата(Golikov A. @ Apr 15 2014, 20:50) *
а сколько таких команд влезет в 512 кБайтную флэшку... мочи не хватит и кипятильник сдохнет...
нафига вам это? компилятор пишите?

Предположу за автора, что это скорее DSP приложение, где реально это сильно помогает.
Go to the top of the page
 
+Quote Post
SII
сообщение Apr 17 2014, 05:13
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 13-07-10
Из: Солнечногорск-7
Пользователь №: 58 414



Цитата(Dot @ Apr 15 2014, 17:16) *
Тем не менее, Keil для этих команд синтаксис так и не подсвечивает


Как насчёт ассемблерных вставок в Си, я не знаю, но для чистого ассемблера подсветка мнемоник в Кейле 4.50 и позже (насчёт 5.* не знаю -- не использую) определяется специальным файлом, aarm.prop.def. Многих мнемоник там банально нету, потому они и не подсвечены должным образом. Но при желании ничто не мешает их туда ввести. На работу собственно транслятора ассемблера это никак не сказывается -- он же не на подсветку ориентируется (она только текстовым редактором учитывается).

Цитата(Golikov A. @ Apr 15 2014, 20:50) *
а сколько таких команд влезет в 512 кБайтную флэшку...


Большинство команд Thumb-2 -- 4-байтовые, и насыщенная арифметика исключением не является. Двухбайтовыми являются лишь команды, которые появились ещё в версии архитектуры ARMv4T (в обычной Тумбе), а также несколько дополнительных команд. И таки да, в приложениях, связанных с цифровой обработкой сигнала, использование подобных инструкций при прочих равных в несколько раз ускоряет работу.

Сообщение отредактировал SII - Apr 17 2014, 05:13
Go to the top of the page
 
+Quote Post
megajohn
сообщение Apr 17 2014, 08:42
Сообщение #8


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

Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143



Читаю книгу, вижу фигу.
то есть не понимаю суть самой операции насыщения. Кто разжуёт ?


--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
Go to the top of the page
 
+Quote Post
scifi
сообщение Apr 17 2014, 09:26
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(megajohn @ Apr 17 2014, 12:42) *
то есть не понимаю суть самой операции насыщения. Кто разжуёт ?

Суть - в насыщении :-)
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Apr 17 2014, 10:18
Сообщение #10


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(Dot @ Apr 14 2014, 16:22) *
Что может быть не так?
Подход не тот вы применяете (изобретаете велосипед заново).
Используйте CMSIS - там уже за вас давно всё это сделано.
HINT: загляните в файлик core_cmInstr.h для общего развития, но не подключайте его непосредственно, используйте core_cm3.h


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post

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

 


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


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