Спасибо за статью, было интересно. Я думал я один подобным страдаю :) Тоже сейчас делаю свой процессор, правда делаю его на ПЛИС. Сейчас процессор в целом готов, занимаюсь интерфейсами (UART реализовал, i2c в процессе). Если интересно, код процессора тут. Ассемблер для данного процессора реализовал с нуля (код компилятора тут). Все собираюсь написать статью, но пока руки не дошли. Про компиляторы даже записал несколько видео, если интересно, вот ссылка на плейлист :)
«Краткая и на 146% точная история языков программирования». Из названия вытекает, что данная статья посвящена языкам программирования, а не языкам высокого уровня.
Проблема не в том, что они не летают, а в их расположении. Если коротко, то из-за расположения двигателей, при определенных условиях, самолет слишком высоко задирает нос, что может привести к остановке самолета. MCAS — это костыль, который должен был решить проблему с задиранием носа. Подробнее тут.
У меня все больше возникает ощущение, что из программистов в этой истории делают козлов отпущения. Как я понимаю основная проблема данного боинга — это корявое расположение двигателей. Именно для решения этой проблемы программисты писали костыль в виде MCAS. А складывается впечатление, что все теперь хотят свалить на кривой софт…
Здравствуйте. Спасибо за статью, аж ностальгия нахлынула. Не так давно тоже решил, что хочу узнать больше о железе и вообще о том как все работает. Для лучшего понимания посмотрел лекции Carnegie Mellon — Computer Architecture. Рекомендую, там рассказывают про работу более актуальных процессоров. Сейчас пытаюсь создать свой процессор на ПЛИС, и рассказываю о процессе создания на youtube. Если интересно, то вот ссылка на канал.
Я тоже не уверен, что с этим будет делать JS. Скорее всего этот способ займет много памяти. Но по своей простоте и очевидности, способ по-моему самый простой. Ведь что конкретно автор имеет ввиду под «оптимально» мы пока не выяснили…
Я с темой оптимизации не сталкивался, но возник такой вопрос. На сколько я понял Quartus тоже умеет оптимизировать код (поправьте, если не прав), оптимизирует ли Simulink код для Altera лучше, чем Quartus?
Согласен, divider подходит больше. Симуляцию для кода постараюсь добавить завтра, но это не точно, посмотрю как со временем завтра будет. А статью если напишите, я с удовольствием почитал бы :)
Боюсь начать с баз данных затея крайне неудачная. Если человек хочет научиться программировать, а Вы будите ему рассказывать о том как таблицы связывать между собой, скорее всего энтузиазм у человека быстро пропадет.
Кажется можно сделать быстрее если вместо присвоения использовать xor на соответствующем бите порта B. При этом в идеале загрузить битовую маску в регистр нужно 1 раз, до начала цикла.
Спасибо за статью. У меня возник вопрос по поводу адресов. Вы пишите:
Каждый указатель имеет размер 4 байта, значит следующий адрес за 0x0800 0004 во flash памяти будет 0x0800 0004 + 4 = 0x0800 0008. Это значение и необходимо поместить по адресу 0x0800 0004.
Судя по таблице векторов прерываний 0x0800 0004 – адрес reset вектора, а 0x0800 0008 – адрес NMI вектора. Непонятно зачем размещать адрес NMI вектора в reset векторе?
Таймер скорее программный. На сколько мне известно Linux при старте настраивает 1 хардварный таймер. И в дальнейшем по нему все синхронизирует. Предполагаю что hrtimer записывает процессы в очередь и с какой-то периодичностью проверяет не пора ли процессы из этой очереди вызывать.
Судя по таблице векторов прерываний 0x0800 0004 – адрес reset вектора, а 0x0800 0008 – адрес NMI вектора. Непонятно зачем размещать адрес NMI вектора в reset векторе?
На чистом C это можно убрать, но тогда нельзя использовать библиотеки созданные для Adruino IDE.