Search
Write a publication
Pull to refresh
12
0
LLDevLab @mksma

Пользователь

Send message
Вы правы, пока это просто транслятор из ассемблера в машинный код. А компилятор он скорее в моих мечтах :)
Спасибо за статью, было интересно. Я думал я один подобным страдаю :) Тоже сейчас делаю свой процессор, правда делаю его на ПЛИС. Сейчас процессор в целом готов, занимаюсь интерфейсами (UART реализовал, i2c в процессе). Если интересно, код процессора тут. Ассемблер для данного процессора реализовал с нуля (код компилятора тут). Все собираюсь написать статью, но пока руки не дошли. Про компиляторы даже записал несколько видео, если интересно, вот ссылка на плейлист :)
«Краткая и на 146% точная история языков программирования». Из названия вытекает, что данная статья посвящена языкам программирования, а не языкам высокого уровня.
Проблема не в том, что они не летают, а в их расположении. Если коротко, то из-за расположения двигателей, при определенных условиях, самолет слишком высоко задирает нос, что может привести к остановке самолета. MCAS — это костыль, который должен был решить проблему с задиранием носа. Подробнее тут.
У меня все больше возникает ощущение, что из программистов в этой истории делают козлов отпущения. Как я понимаю основная проблема данного боинга — это корявое расположение двигателей. Именно для решения этой проблемы программисты писали костыль в виде MCAS. А складывается впечатление, что все теперь хотят свалить на кривой софт…
Здравствуйте. Спасибо за статью, аж ностальгия нахлынула. Не так давно тоже решил, что хочу узнать больше о железе и вообще о том как все работает. Для лучшего понимания посмотрел лекции Carnegie Mellon — Computer Architecture. Рекомендую, там рассказывают про работу более актуальных процессоров. Сейчас пытаюсь создать свой процессор на ПЛИС, и рассказываю о процессе создания на youtube. Если интересно, то вот ссылка на канал.
Я тоже не уверен, что с этим будет делать JS. Скорее всего этот способ займет много памяти. Но по своей простоте и очевидности, способ по-моему самый простой. Ведь что конкретно автор имеет ввиду под «оптимально» мы пока не выяснили…
Если под «оптимальностью» имелось ввиду «оптимальное по размеру кода и очевидности», то зачем так извращаться? Можно ведь просто использовать for…
function func(str) {
	ret = "";
	for(i = str.length; i >= 0; i--)
		ret += str.substr(i, 1);
	return ret;
}
Я с темой оптимизации не сталкивался, но возник такой вопрос. На сколько я понял 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 записывает процессы в очередь и с какой-то периодичностью проверяет не пора ли процессы из этой очереди вызывать.
Нет, частоту не замерял.
Не уверен, что статья подходит для Хабра. Чаще такого рода статьи вижу на Geektimes поэтому написал сюда.
Проверил что Arduino IDE добавляет в исполняемый файл. Среди прочего в линкер передавалось это:
arduino_cache_122843\core\core_arduino_avr_uno_27ad0de2390183402c74f07cbe44f9f8.a
На чистом C это можно убрать, но тогда нельзя использовать библиотеки созданные для Adruino IDE.
Оставил по этому поводу комментарий ниже. По моим наблюдениям Arduino IDE в исполняемый файл подсовывает какую-то свою библиотеку, отсюда и разница.
1

Information

Rating
Does not participate
Registered
Activity