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

 
 
> Минимизация логических операций
toweroff
сообщение Jul 9 2013, 21:57
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



То ли поздно уже... никак не соображу. А, может, вообще компилятору отдать, но sm.gif

uint32_t a;

a = (a & 0x0FFFFFFF) | 0x80000000;

кроче говоря - буквально - одно действие возможно?







Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
firew0rker
сообщение Jul 10 2013, 01:57
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 206
Регистрация: 11-07-12
Из: Новосибирск
Пользователь №: 72 716



Невозможно, если только у процессора нет инструкции, записывающей константу в старший полубайт старшего байта. Я таких процессоров не знаю.
Go to the top of the page
 
+Quote Post
adnega
сообщение Jul 10 2013, 05:47
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(firew0rker @ Jul 10 2013, 05:57) *
Невозможно, если только у процессора нет инструкции, записывающей константу в старший полубайт старшего байта. Я таких процессоров не знаю.

У Cortex-M3 есть инструкция
Цитата
BFI.W Rd, Rn, #<lsb>, #<width> Insert bit field to a register

Правда, в Rn должен быть подготовлен шаблон.
Цитата
Bit Field Insert (BFI) copies 1–31 bits (#width) from one register to any location (#lsb) in another
register. The syntax is as follows:
BFI.W <Rd>, <Rn>, <#lsb>, <#width>
For example,
LDR R0,=0x12345678
LDR R1,=0x3355AACC
BFI.W R1, R0, #8, #16 ; Insert R0[15:0] to R1[23:8]
This will give R1 = 0x335678CC.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Jul 10 2013, 08:46
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(adnega @ Jul 10 2013, 09:47) *
У Cortex-M3 есть инструкция

нет, это, к сожалению, ARM7

Цитата(adnega @ Jul 10 2013, 09:47) *
Правда, в Rn должен быть подготовлен шаблон.

спасибо, буду знать
правда, не очень-то мне это помогло бы. Мне нужно заменить не байт, а старшую тетраду старшего байта
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 15:15
Рейтинг@Mail.ru


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