Ассемблер (ASM) для AVR в вопросах и ответах
Re: Ассемблер (ASM) для AVR в вопросах и ответах
А, ну если в курсе, это хорошо.
У меня ассемблер avra.
У меня ассемблер avra.
- Реклама
Re: Ассемблер (ASM) для AVR в вопросах и ответах
О!! спасибо, я почему то решил что битовые операции на порты не распространяются.ChipKiller писал(а):... по поводу Вашего кода экономии при таком стиле записи точно не будет. Все можно описать такКод: Выделить всё
sbi PORTC,5 cbi PORTC,5 sbi PORTC,5
Re: Ассемблер (ASM) для AVR в вопросах и ответах
К сожалению сейчас на работе... пробовать буду вечером... надеюсь что мои проблемы именно из за SREG так как в lcd.asm есть участки кода в которых потеря Z флага между например DEC temp и командой условного перехода будет приводить к каким угодно последствиям...ploop писал(а):Да ладно, не кипятитесь. Просто 64к кода - это реально много.
С SREG разобрались? Глюки не исчезли?
какой эмулятор можно использовать ? в принципе железка есть - и работу кода проверяю непосредственно на ней.. но вот такие вещи как отловить запись в определенную область памяти на железке не могу...
Re: Ассемблер (ASM) для AVR в вопросах и ответах
когда то очень давно использовал короткую процедуру печати десятичного числа на асме..
никто не подскажет ?
алгоритм был простой какой то.. с командой десятичной коррекции (DAA в i8080)
никто не подскажет ?
алгоритм был простой какой то.. с командой десятичной коррекции (DAA в i8080)
Re: Ассемблер (ASM) для AVR в вопросах и ответах
На счет эмуляторов: всяким протеусам я не доверяю (хотя народ успешно отлаживает), код пишу в удобном текстовом редакторе с возможностью запуска компиляции и прошивки, а проблемные места отлаживаю либо в студии, либо в железе.
- Реклама
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Не это?ВитГо писал(а):когда то очень давно использовал короткую процедуру печати десятичного числа на асме..
никто не подскажет ?
алгоритм был простой какой то.. с командой десятичной коррекции (DAA в i8080)
Код: Выделить всё
DigitConvert:
clr Hundreds
clr Tens
clr ones
FindHundreds:
subi lowerbyte,100
sbci upperbyte,0
brcs FindTens
inc Hundreds
rjmp FindHundreds
FindTens:
subi lowerbyte,-100
subi lowerbyte,10
brcs FindOnes
inc Tens
rjmp FindTens+1
FindOnes:
subi lowerbyte,-10
mov Ones,lowerbyte
ret- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: Ассемблер (ASM) для AVR в вопросах и ответах
2 ВитГо ... все же думаю, что если пройтись по Вашему С-коду, то оптимизировать по размеру можно и там. Я так понимаю, что строки именно из исходника
перепишите их и получите экономию 
Код: Выделить всё
PORTC |= 0x20;
PORTC &= ~0x20;
PORTC |= 0x20;перепишите их
Код: Выделить всё
PORTC.5=1;
PORTC.5=0;
PORTC.5=1;
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18648
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
это с какого ж хрена экономия выйдет?!ChipKiller писал(а):2 ВитГо ... все же думаю, что если пройтись по Вашему С-коду, то оптимизировать по размеру можно и там. Я так понимаю, что строкиименно из исходникаКод: Выделить всё
PORTC |= 0x20; PORTC &= ~0x20; PORTC |= 0x20;
перепишите ихи получите экономиюКод: Выделить всё
PORTC.5=1; PORTC.5=0; PORTC.5=1;
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: Ассемблер (ASM) для AVR в вопросах и ответах
... ну вообще-то строкиARV писал(а):это с какого ж хрена экономия выйдет?!
Код: Выделить всё
PORTC |= 0x20;
.// и
PORTC.5=1;
Код: Выделить всё
IN temp , PORTC ; PORTC |= 0x02;
ORI temp , 0x20
OUT PORTC , temp- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18648
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
судя по тому, что у автора код может не влезть в 64К - он большой знаток Си... в 64К люди впихивают целые системы с формированием цветного видеоизображения, многоканальным звуком и т.п. - игровая приставка UzeBox... и там от 60 до 80% кода написано на Си... а тут какое-то радиоупралвение - и не влезает! думаю, ассемблер тут вряд ли поможет 
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: Ассемблер (ASM) для AVR в вопросах и ответах
при "нормальном" программировании на ассемблере, код в большом проекте вряд-ли удастся оптимизировать по размеру более чем на 30-40%, а вот нахватать ошибок проще простого
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18648
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
я бы сказал "наоборот" - при нормальном программировании на Си код вряд ли будет на 30% больше ассемблерногоChipKiller писал(а):при "нормальном" программировании на ассемблере, код в большом проекте вряд-ли удастся оптимизировать по размеру более чем на 30-40%, а вот нахватать ошибок проще простого
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Ассемблер (ASM) для AVR в вопросах и ответах
самая большая проблема при программировании таких устройств - это построение интерфейса..
тем более что интерфейс сложный, от значений одних параметров меняется количество и возможные значения других.. и так далее..
еще раз говорю - можете говорить все что угодно о том какой я знаток СИ, но есть еще несколько прошивок на это же устройство, и у всех примерно один размер кода.. (написанного на СИ)..
понятно что скорее всего все написавшие другие варианты прошивок тоже криворукие
)) - но это так...
поэтому: предлагаю не вдаваться в вопросы размеров, вкусов и мастерства программирования - просто поверьте что бывают железки посложнее игровых консолей...
далее оффтопик:
p.s. если ктото всеже уверен в своих силах то вот ссылки на исходники на СИ, приму результат хотя бы 10-15% экономии на коде (хотя мне этого все равно будет мало)
1. VCoder-source.zip
2. http://forum.rcdesign.ru/attachment.php ... 1270849280
3. http://code.google.com/p/th9x/ (смотрите раздел source)
p.p.s. опять ушли в неконструктив..
тем более что интерфейс сложный, от значений одних параметров меняется количество и возможные значения других.. и так далее..
еще раз говорю - можете говорить все что угодно о том какой я знаток СИ, но есть еще несколько прошивок на это же устройство, и у всех примерно один размер кода.. (написанного на СИ)..
понятно что скорее всего все написавшие другие варианты прошивок тоже криворукие
поэтому: предлагаю не вдаваться в вопросы размеров, вкусов и мастерства программирования - просто поверьте что бывают железки посложнее игровых консолей...
далее оффтопик:
p.s. если ктото всеже уверен в своих силах то вот ссылки на исходники на СИ, приму результат хотя бы 10-15% экономии на коде (хотя мне этого все равно будет мало)
1. VCoder-source.zip
2. http://forum.rcdesign.ru/attachment.php ... 1270849280
3. http://code.google.com/p/th9x/ (смотрите раздел source)
p.p.s. опять ушли в неконструктив..
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: Ассемблер (ASM) для AVR в вопросах и ответах
... просто для начала неплохо понять, за счет чего Вам удастся получить меньший объем занимаемого кода. Простой переход на ассемблер даст немного, но вот отлаживать такую программу и искать в ней ошибки, будет гораздо трудней. Возможно "лучший" результат может быть достигнут другими путями - например вынос констант во внешнюю память и т.д.ВитГо писал(а):опять ушли в неконструктив..
... возможно, что в таком варианте исполнения для этого устройства - это предел.ВитГо писал(а):.. но есть еще несколько прошивок на это же устройство, и у всех примерно один размер кода.. (написанного на СИ)..
понятно что скорее всего все написавшие другие варианты прошивок тоже криворукие
Re: Ассемблер (ASM) для AVR в вопросах и ответах
ploop писал(а):Не это?ВитГо писал(а):когда то очень давно использовал короткую процедуру печати десятичного числа на асме..
никто не подскажет ?
алгоритм был простой какой то.. с командой десятичной коррекции (DAA в i8080)Код: Выделить всё
DigitConvert: clr Hundreds clr Tens clr ones ...
Прикольный алгоритм.. нет.. не этот... ладно, найду сам выложу..
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Я бы рад сделать вынос констант или что еще проще просто поменять мегу64 на мегу128 ! но одно из требований проекта - неизменность железа ! поэтому пляшем от той печки что имеем...ChipKiller писал(а):... просто для начала неплохо понять, за счет чего Вам удастся получить меньший объем занимаемого кода. Простой переход на ассемблер даст немного, но вот отлаживать такую программу и искать в ней ошибки, будет гораздо трудней. Возможно "лучший" результат может быть достигнут другими путями - например вынос констант во внешнюю память и т.д.
возможно, что в таком варианте исполнения для этого устройства - это предел.
с отладкой конечно беда.. - уже столкнулся.. и пока очень тяжко..
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: Ассемблер (ASM) для AVR в вопросах и ответах
ВитГо просто поверьте на слово - для получения экономии хотя бы 20-30% Flash - от существующего C-проекта мало что останется.
... и это только начало. Сам в основном пишу на ассемблере, но переписать 64 Кило - это .......с отладкой конечно беда.. - уже столкнулся.. и пока очень тяжко..
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Ну у меня ситуация немного другая..ChipKiller писал(а): ВитГо просто поверьте на слово - для получения экономии хотя бы 20-30% Flash - от существующего C-проекта мало что останется.... и это только начало. Сам в основном пишу на ассемблере, но переписать 64 Кило - это .......с отладкой конечно беда.. - уже столкнулся.. и пока очень тяжко..
проект который на СИ (исходники на который я кидал) - уже закончен.. только исправляю глюки (если находят)...
Но есть задумка на новый функционал - вот и хочу попробовать написать на асме..
p.s. мы не ищем легких путей, это же хобби, а не работа ! а в хобби любой геморрой интересен !
Re: Ассемблер (ASM) для AVR в вопросах и ответах
с прерываниями разобрался - стал сохранять в стеке SREG и произвольная перезагрузка ушла
с экраном разобрался - артефактов больше нет (нужно было учить матчасть - я адрес в RAM при присваивании на 2 умножал... и зря..
а есть какая то математическая библиотека ? или где можно посмотреть про умножение и деление 16-32 битных чисел ? интересуют целочисленные алгоритмы.
с экраном разобрался - артефактов больше нет (нужно было учить матчасть - я адрес в RAM при присваивании на 2 умножал... и зря..
а есть какая то математическая библиотека ? или где можно посмотреть про умножение и деление 16-32 битных чисел ? интересуют целочисленные алгоритмы.
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Аппнот AVR200: Multiply and Divide Routines. This Application Note lists subroutines for multiplication and division of 8 and 16-bit signed and unsigned numbers.ВитГо писал(а):где можно посмотреть про умножение и деление 16-32 битных чисел ? интересуют целочисленные алгоритмы.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]


