Если можно, то нужно ?
Nov. 13th, 2020 10:09 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Я работаю над одним проектом, который с большим трудом вмещается в 64к памяти микроконтроллера. И подумалось мне, что возможно, пора взглянуть на разные компиляторы, чтобы выбрать какой более агрессивно может уменьшить размер программы.
А правда, так ли уж нужен компилятор для микроконтроллеров с маленькой памятью ?
Ведь чисто ассемблерные программы на такой объем - это несколько тысяч строк вида
; отслеживание нажатия кнопки m1 btfsc PORTA,2 ; бит-проверка ножки RA2 goto m1 m2 btfss PORTA,2 ; бит-проверка ножки RA2 goto m2 ; отслеживаем отжатие кнопки movlw b01000000 movwf PORTB call Pause m3 btfsc PORTA,2 ; бит-проверка ножки RA2 goto m3 m4 btfss PORTA,2 ; бит-проверка ножки RA2 goto m4 ; отслеживаем отжатие кнопки movlw b00000010 movwf PORTB call Pause goto m1
Т.е. предельно читабельный код. Эти несколько тысяч строк напишутся быстрее, чем изучатся компиляторы. Всякие объекты-спиcки и прочие горутины отпадают, да хрен с ними. Более того, в компиляторах еще придется привыкать к их особенностям, ассемблеры же максимально приближены к документации на контроллер.
Компиляторы-то и были созданы для абстрагирования от машинного уровня, что невозможно при программировании микроконтроллера.