Size: a a a

2021 February 03

AK

Andrew K in Embedded Group
хрень))) я такого не встречал в листингах, все намного красивее
источник

LZ

Leonid Zaliubovskii in Embedded Group
Andrew K
On the Cortex M3 it takes 40 bytes:
if (--timeout) return;
   F2400360    movw r3, #0x60
   F2C20300    movt r3, #0x2000
   7B5B        ldrb r3, [r3, #13]
   F10333FF    add.w r3, r3, #0xFFFFFFFF
   B2DA        uxtb r2, r3
   F2400360    movw r3, #0x60
   F2C20300    movt r3, #0x2000
   735A        strb r2, [r3, #13]
   F2400360    movw r3, #0x60
   F2C20300    movt r3, #0x2000
   7B5B        ldrb r3, [r3, #13]
   2B00        cmp r3, #0
   D128        bne 0x08000F92
Хз че там наворотили, ибо адекватный компилятор

F2400360    movw r3, #0x60
F2C20300    movt r3, #0x2000
7B5B             ldrb r3, [r3, #13

Первые две инструкции заменит на
`
LDR R3, =0x20000060
источник

LZ

Leonid Zaliubovskii in Embedded Group
Ибо movt, это такая штука, что старшую половину регистра загружает только, не трогая меньшую
источник

LZ

Leonid Zaliubovskii in Embedded Group
Чёт там намудрили. И тогда сразу код станет меньше
источник

AK

Andrew K in Embedded Group
мб gcc в 2012 такой и был
источник

LZ

Leonid Zaliubovskii in Embedded Group
Похоже на то
источник

I

Igor in Embedded Group
Leonid Zaliubovskii
Хз че там наворотили, ибо адекватный компилятор

F2400360    movw r3, #0x60
F2C20300    movt r3, #0x2000
7B5B             ldrb r3, [r3, #13

Первые две инструкции заменит на
`
LDR R3, =0x20000060
все три заменит, в общем-то
это же просто загрузка по адресу 0x2000006D
источник

LZ

Leonid Zaliubovskii in Embedded Group
Вообщем то да, чёт не подумал, два часа утра
источник

DS

Dmitriy Salko in Embedded Group
Aleksander Mironov
https://www.embeddedrelated.com/showthread/comp.arch.embedded/136779-1.php
В треде чел привел пример, как у него 1 пиковская инструкция заменена 10 армскими. (компиблядор не за хотел битбанг использовать по какой то ему лишь ведомой причине)
Я не вчитывался, так по заголовкам пробежался, может он накосячил где.
Небось с отключенной оптимизацией
источник

LZ

Leonid Zaliubovskii in Embedded Group
Dmitriy Salko
Небось с отключенной оптимизацией
Ну и 9 лет назад. Думаю там комплексно
источник

r

romanetz in Embedded Group
На атмелах usb в более вменяемых конфигах, корпусах и без ёбнутых ограничений stm32
источник

r

romanetz in Embedded Group
Оттого в аманерах всяких ("транспорт", преобразователь usb-i2s) именно они
источник

IL

Ivan Loskutov in Embedded Group
Leonid Zaliubovskii
Хз че там наворотили, ибо адекватный компилятор

F2400360    movw r3, #0x60
F2C20300    movt r3, #0x2000
7B5B             ldrb r3, [r3, #13

Первые две инструкции заменит на
`
LDR R3, =0x20000060
не станет меньше, LDR это загрузка из памяти по оффсету, т.е . команда, и еще 4 байта данных рядом лежат. такая запись просто синтаксический сахар для компилятора, он константу сам положит, и валидный опкод сгенерит. возможно и по тактам может дольше быть. в первом случае с загрузкой команд уже данные в опкодах, а во втором нужно в память сходить, но тут от реализации конвейера зависит
источник

A

Alexander in Embedded Group
Aleksander Mironov
Я вот погуглил, там какая-то супер разная инфа, ее мало.
От обещаний вендора о сокращении в среднем на 30% по сравнению с некими конкурентами.
До перца, у которого в районе 2х раз выросло.
В ARM скорее всего будет использоваться Thumb (т.е. команды упаковываются по паре в машинное слово).
Как правило современные 32-битные МК обладают сильно больше Flash и бо́льшую тактовую частоту чтобы в разумных пределах не париться по поводу размера программы и времени ее выполнения
источник

AM

Aleksander Mironov in Embedded Group
Alexander
В ARM скорее всего будет использоваться Thumb (т.е. команды упаковываются по паре в машинное слово).
Как правило современные 32-битные МК обладают сильно больше Flash и бо́льшую тактовую частоту чтобы в разумных пределах не париться по поводу размера программы и времени ее выполнения
на 8 битах 128кб забиты (правда там таблиц много всяких)
Если она увеличится еще раза в полтора то половина линеек отпадет, в том числе и обсуждаемый выше СЭМ С21
Плюс хотелось бы половину на плюсы и ООП переписать, что тоже подраздует. И выходит что вся кутерьма окажется ради 32кбоставшихся  =)
источник

s

shadowsoul in Embedded Group
таблицы пожать к херам если есть запас по оперативе)
источник

s

shadowsoul in Embedded Group
или же считать на ходу, если несложные и по производительности есть запас
источник

A

Alexander in Embedded Group
Aleksander Mironov
на 8 битах 128кб забиты (правда там таблиц много всяких)
Если она увеличится еще раза в полтора то половина линеек отпадет, в том числе и обсуждаемый выше СЭМ С21
Плюс хотелось бы половину на плюсы и ООП переписать, что тоже подраздует. И выходит что вся кутерьма окажется ради 32кбоставшихся  =)
Надо смотреть.
Если нет требований по малому энергопотреблению - можно выбрать что-то а ля STM32H7 - мегабайт SRAM, два мега FLASH, 480+ МГц тактовой, возможность использовать XIP (execute in place) с внешних QSPI.
источник

AK

Andy Korg in Embedded Group
Aleksander Mironov
Еще такой вопрос.
Кто реально имел опыт переноса кодовой базы проекта с 8 бит на 32\АРМ, насколько реально вырастает размер кода?  Так примерно можете почувствовать. Понятное дело что не в 4 раза вырастает. Но вот так - по прикидкам.
переносил с avr  на esp32 ( xtensia) с 32 к выросло до 400к примерно. на самом деле до 900к, но 500 к заняла работа с wifi
источник

AM

Aleksander Mironov in Embedded Group
Andy Korg
переносил с avr  на esp32 ( xtensia) с 32 к выросло до 400к примерно. на самом деле до 900к, но 500 к заняла работа с wifi
Жесть конечно. Но не релевантно все таки, на есп блинк 150кб занимает =)
источник