Перейти к содержанию
    

Минимизация логических операций

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

 

uint32_t a;

 

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

 

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

 

 

 

 

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Невозможно, если только у процессора нет инструкции, записывающей константу в старший полубайт старшего байта. Я таких процессоров не знаю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Невозможно, если только у процессора нет инструкции, записывающей константу в старший полубайт старшего байта. Я таких процессоров не знаю.

У 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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У Cortex-M3 есть инструкция

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

 

Правда, в Rn должен быть подготовлен шаблон.

спасибо, буду знать

правда, не очень-то мне это помогло бы. Мне нужно заменить не байт, а старшую тетраду старшего байта

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мне нужно заменить не байт, а старшую тетраду старшего байта
Так в описании к инструкции же сказано - "битовое поле от 1 до 31 бита длиной".

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так в описании к инструкции же сказано - "битовое поле от 1 до 31 бита длиной".

точно.. невнимателен :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...