ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
26 апреля
846449 Топик полностью
йцукен (06.06.2018 21:00, просмотров: 98) ответил IBAH на Пазвольте! в каком-то програминг мануале видел, что АРМ аппаратно поддерживает типы данных от int8 до int32, правда где не помню... И что характерно, misyachniy это подтверждает.
Поддерживает в том смысле, что кроме инструкций STR и LDR есть SRTB, STRH, LDRB, LDRH. Арифметические и логические операции 32-битные. Обычно это без разницы, но не всегда. Например, uint8_t some8bitvar; void f( uint8_t a, uint8_t b ) { some8bitvar = (a+b)>>1; } \ 00000000 0x1840 ADDS R0,R0,R1 \ 00000002 0xB280 UXTH R0,R0 \ 00000004 0x0840 LSRS R0,R0,#+1 \ 00000006 0x.... LDR R1,??DataTable13_4 \ 00000008 0x7008 STRB R0,[R1, #+0] Здесь инструкция UXTH нужна, чтобы 9-й бит, который после сложения может оказаться равным 1, не попал в 8-й. Без правого сдвига дополнительная инструкция не генерируется.