byRAM 24 7 мая, 2021 Опубликовано 7 мая, 2021 · Жалоба 06.05.2021 в 22:30, do_not_know_Linux сказал: я хочу поработать на самом низком уровне. есть такие микроконтроллеры, котрые бы это позволили? Конечно есть! PIC12, PIC16, PIC18, ATmega, MCS51, MSP430 - их все можно программировать как на Си, так и на ассемблере. Они, разумеется, далеко не передовые, но их очень полезно изучать первыми именно на ассемблере. 07.05.2021 в 12:08, wim сказал: Вы не на тот форум зашли. Форум тот, отвечают не те Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 7 мая, 2021 Опубликовано 7 мая, 2021 · Жалоба 44 minutes ago, byRAM said: Форум тот, отвечают не те Вот же еще вчера ответили 48 minutes ago, byRAM said: так и на ассемблере Не хочет ТС на ассемблере, хочет исключительно ноликами и единичками. И зачем это ему нужно не говорит. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
byRAM 24 7 мая, 2021 Опубликовано 7 мая, 2021 · Жалоба 34 минуты назад, zombi сказал: Вот же еще вчера ответили Изачем это ему нужно не говорит. Любой - это не ответ. МК с ядрами на ассемблере тяжко запрограммировать, если вообще реально. Ассемблер легко представить в виде ноликов и единичек. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 7 мая, 2021 Опубликовано 7 мая, 2021 · Жалоба 1 minute ago, byRAM said: МК с ядрами на ассемблере тяжко запрограммировать, если вообще реально А что такое "МК с ядрами"? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
byRAM 24 7 мая, 2021 Опубликовано 7 мая, 2021 · Жалоба 7 минут назад, aaarrr сказал: А что такое "МК с ядрами"? С MIPSами, ARMами, кортексами и т.д. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 7 мая, 2021 Опубликовано 7 мая, 2021 · Жалоба Это C6000 может быть тяжко на ассемблере. ARM/MIPS мало чем отличаются от PIC в данном плане. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 1 7 мая, 2021 Опубликовано 7 мая, 2021 (изменено) · Жалоба Пусть мой самый простой (~200ЛЕ) 16-разрядный софт-процессор возьмет. Система команд очень простая, регистров нет вообще (аккумуляторная архитектура), можно в коде программировать, можно на Си (lcc). По быстродействию в самом дешевом Циклоне4 - как 80МГц stm32, сравнивались на задачке N-ферзей, на Си. Система команд (разряды 1..10 - адрес данных в памяти, разряд 0 - косвенная адресация): NOP 0x0000 ST 0x1000 dst=acc LD 0x2000 acc=src COM 0x3000 acc=~src NEG 0x4000 acc=-src ADD 0x5000 acc+=src SUB 0x6000 acc-=src AND 0x7000 acc&=src OR 0x8000 acc|=src XOR 0x9000 acc^=src ASL 0xA000 acc<<=1 ASR 0xB000 acc>>=1 EQ 0xC000 if(src==acc) pc=imm NE 0xC800 if(src!=acc) pc=imm GT 0xD000 if(src > acc) pc=imm LE 0xD800 if(src<=acc) pc=imm GE 0xE000 if(src>=acc) pc=imm LT 0xE800 if(src < acc) pc=imm CALL 0xF000 dst=pc+2 pc=imm RET 0xF800 pc=src LDE 0x0800 0x2800 0x4800 0x6800 0x8800 0xA800 STE 0x1800 0x3800 0x5800 0x7800 0x9800 0xB800 Изменено 7 мая, 2021 пользователем Leka Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 53 7 мая, 2021 Опубликовано 7 мая, 2021 · Жалоба 1 час назад, byRAM сказал: С MIPSами, ARMами, кортексами и т.д. В таком случае, что такое МК без ядер?))))))) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 53 7 мая, 2021 Опубликовано 7 мая, 2021 · Жалоба 35 минут назад, Leka сказал: можно на Си (lcc) Порт lcc сами писали? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 1 7 мая, 2021 Опубликовано 7 мая, 2021 · Жалоба 3 minutes ago, mantech said: Порт lcc сами писали? Да, но не полноценный - внес изменения в symbolic.c (емнип), ассемблер свой. Полной поддержки Си нет, конечно, только основные конструкции, один тип данных (int), нет стандартной библиотеки. Делался ради интереса, практически проверить некоторые идеи (ну и в домашней автоматике уже много лет работает). На Марсоходе выкладывал (но там lcc надо устанавливать, без этого компилятор не запускается, емнип). Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 1 7 мая, 2021 Опубликовано 7 мая, 2021 · Жалоба Так выглядит программа N-ферзей, которую запускаю при проверке новых плат с ПЛИС. "top.c" - своя небольшая библиотека на Си, для вывода и тп, тк стандартной библиотеки (printf() и тп) нет. #include "top.c" int queens(int N) { int arow[16], aleft[16], aright[16], aposs[16], poss, place, val, pos, cnt; pos=1; val = (1<<N)-1; arow[1]=aleft[1]=aright[1]=0; poss=aposs[1]=val>>(N>>1); cnt = 0; while(pos){ if(poss){ place = poss & -poss; poss &= ~place; if(pos==1 && !poss && (N & 1)) cnt<<=1; if(pos!=N){ aposs[pos]=poss; poss=arow[pos+1]=arow[pos]|place; poss|=aleft[pos+1]=(aleft[pos]|place)<<1; poss|=aright[pos+1]=(aright[pos]|place)>>1; aposs[++pos]=poss=~(poss) & val; } else{ ++cnt; } }else{ poss=aposs[--pos]; } } if(!(N&1))cnt<<=1; return cnt; } void main(){ int i,c='?'; while(1){ writech('>'); while((c=readch())==-1); writech(c); writestr("\r\n----rxtx-----\r\n"); for(i=0;i<=12;i++){ writestr("Q["); bin=i; writebin(2); writestr("] = "); bin=queens(i); writebin(5); writestr("\r\n"); } writestr("-------------\r\n\r\n"); } } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 53 7 мая, 2021 Опубликовано 7 мая, 2021 (изменено) · Жалоба 2 часа назад, Leka сказал: Так выглядит программа N-ферзей Математика - это конечно хорошо, а как делаете взаимодействие с периферией, например установить\сбросить бит, прочитать порты ВВ, вызвать какую-нибудь системную функцию, например инициализация интерфейса связи и т.п.? Насколь я понял, взаимодействие с "внешним миром" тут только через readch() и writestr() Изменено 7 мая, 2021 пользователем mantech Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 1 7 мая, 2021 Опубликовано 7 мая, 2021 · Жалоба LDE и STE - команды зарезервированы для обмена с внешними устройствами (порты ВВ, умножители и тд). В ПЛИС для каждого конкретного случая можно делать разную интерпретацию этих команд, соответственно и мнемоника на Си м/б разной (может понадобиться правка исходника компилятора). Например, выделенное имя "port", тогда "port=a+b" будет означать запись в порт результата операции. Посмотрел, в top.c определено: int port; int readport(){return port;} int readch() { … } (Давно это делал, забыл уже подробности.) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость do_not_know_Linux 7 мая, 2021 Опубликовано 7 мая, 2021 · Жалоба 9 hours ago, wim said: Вам надо к ретрокомпьютерщикам - это некроманты где их найти? 6 hours ago, zombi said: И зачем это ему нужно не говорит. а что это изменит? как это повлияет на выбор MK? если бы кто-то, к примеру, меня спросил какую авторезину лучше выбрать на лето за небольшую сумму, то я бы с срадостью посоветовал, и не спрашивал зачем ему это нужно. и уж точно не обвинил бы его в том, что он тролль, потому что не может объяснить зачем ему резина, да еще за небольшую сумму. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 1 7 мая, 2021 Опубликовано 7 мая, 2021 · Жалоба 24 minutes ago, do_not_know_Linux said: где их найти? https://zx-pk.ru/forum.php Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться