ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
25 ноября
270377 Топик полностью
fk0, легенда (06.09.2011 10:38, просмотров: 441) ответил mazur на Проблема в том, что пока все переменные параметры в пределах 64 байт все нормально. Если нет, код раздувается из-за lds\sts.
ВОТ ОНО! Вот! Вот та граница, где кончается ассемблер (для AVR, для PIC16/18 это размер одной 256-байт банки, для x51 это угольное ушко DPTR и xram). Правда в том, что без автоматического распределения памяти, без более "тяжёлого" кода для доступа к такой памяти дальше программировать будет очень тяжело. И именно для этого и нужен компилятор. Можно, конечно, обложиться ватманами размера A1 и там вручную строить дерево вызовов... можно сделать самодельный "язык подвышенного уровня" из макроассемблера. Но всё давно изобретено и коммерческий компилятор языка C тебе вряд ли удастся превзойти. Конечно, на некоторых других архитектурах (к счастью, в embedded они редко встречаются, больше в области антиквариата), вроде Motorola 68000, Zilog Z80, да даже в x86 программировать на ассемблере несколько проще в бОльших масштабах, там нет своих угольных ушек, это процессоры изначально ориентированные на работу с большими объёмами памяти, в отличии от микроконтроллеров. Оттуда и пошло массовое программирование на ассемблере. К тому же CISC (Complex Instruction Set...) А в области микроконтроллеров популярен тот же ARM == Advanced RISC Machines... И программировать типичный RISC на ассебмлере -- удовольствие сильно ниже среднего. Ибо Reduced Instruction Set Computing. Где не будет набора инструкций хорошо умещающегося в человеческом мозге (CISC), где будут недоинструкции RISC, из которых ещё каждый оператор сложить нужно. Зато трёхадресные. Мозг сломаешь. Следующий этап -- программирование VLIW процессора на ассемблере... Любишь ассемблер -- ну бери Rabbit, или eZ80, и программируй в своё удовольствие. Там таких ограничений не будет. Правда проблему распределения памяти никто не снимал и, опять же, либо закат солнца вручную, либо попросту памяти потребуется на порядок больше (ОЗУ) ввиду исключительно статического и неэффективного распределения. Но если её достаточно -- тоже вполне себе подход.
[ZX]