toweroff 1 9 июля, 2013 Опубликовано 9 июля, 2013 · Жалоба То ли поздно уже... никак не соображу. А, может, вообще компилятору отдать, но :) uint32_t a; a = (a & 0x0FFFFFFF) | 0x80000000; кроче говоря - буквально - одно действие возможно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
firew0rker 0 10 июля, 2013 Опубликовано 10 июля, 2013 · Жалоба Невозможно, если только у процессора нет инструкции, записывающей константу в старший полубайт старшего байта. Я таких процессоров не знаю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 10 июля, 2013 Опубликовано 10 июля, 2013 · Жалоба Невозможно, если только у процессора нет инструкции, записывающей константу в старший полубайт старшего байта. Я таких процессоров не знаю. У 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 1 10 июля, 2013 Опубликовано 10 июля, 2013 · Жалоба У Cortex-M3 есть инструкция нет, это, к сожалению, ARM7 Правда, в Rn должен быть подготовлен шаблон. спасибо, буду знать правда, не очень-то мне это помогло бы. Мне нужно заменить не байт, а старшую тетраду старшего байта Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 10 июля, 2013 Опубликовано 10 июля, 2013 · Жалоба Мне нужно заменить не байт, а старшую тетраду старшего байтаТак в описании к инструкции же сказано - "битовое поле от 1 до 31 бита длиной". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 1 10 июля, 2013 Опубликовано 10 июля, 2013 · Жалоба Так в описании к инструкции же сказано - "битовое поле от 1 до 31 бита длиной". точно.. невнимателен :rolleyes: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться