А я вот смотрю на фотку к статье и думаю, какое было славное время. Мужики с баками и в джинсах "клёш". Вокруг дорогие приборы. Интересно, фотку тоже нейронка сгенерировала ?
Тут используется некоторая хитрожопость компилятора, который знает как подкорректировать конкретную константу чтобы при знаковом сложении получить верный результат. Этот фокус работает не для всех констант.
В ДКП ничего не понимаю, но в статье затронута интересная для меня тема - загрузка 64-битной константы в архитектуре RV64I. Недавно столкнулся с необходимостью загружать произвольную константу и не без удивление обнаружил, что код получается очень длинный. Как я не экспериментировал, менее 12 инструкций у меня не выходит. Может быть есть какой-то способ уменьшить их число ?
Ниже мой вариант. Он не использует знаковых сложений (ADDI), поэтому более понятен человеку.
# Load 64 bit constant 0xFEDCBA9876543210 to t0
# This algorithm can work with arbitrary values (signed or unsigned)
# Uses t0, t1 and t2
start:
# Load high 32 bits (sign independent)
lui t0, 0xFEDCB
lui t1, 0xA98
srli t1, t1, 12
or t0, t0, t1
slli t0, t0, 32
# Load low 32 bits (sign independent)
lui t2, 0x76543
lui t1, 0x210
srli t1, t1, 12
or t2, t2, t1
# Clear high 32 bits in t2
slli t2, t2,32
srli t2, t2,32
# Combine the two parts
or t0, t0, t2
# Exit
ret
PS: Пришел к выводу, что лучшее решение - загружать константы из памяти.
Спасбо за Ваше ревью. Похоже, что Вы единственный кто смог прочесть статью целиком. :-)
На счет установки Boot Protocol принудительно. Мне где-то попадалась инфа (помоему на OSDev), что с некоторых пор все клавы и мыши, по просьбам разработчиков BIOS, по умолчанию работают в Boot протоколе. Во всяком лучае, мне пока что другие не попадались. :-) Но я подправлю код конечно же.
Есть идея расширить до USB 1.1 и сделать поддержку Mass Storage Class, чтобы загружать на ПЛИСе какую нибудь ОС.
Это он сейчас токсичный, канцерогенный и сильный наркотик. А во времена СССР в авто/авиа/судомодельных кружках дихлорэтаном клеили любой пластик - универсальное средство было. Еще помните были такие конструкторы из пластика для сборки авиамоделей, там детали от литника надо было отламывать и склеивать - в них тоже прилагался пузырек дихлорэтана. :)
Я вот тоже вспомнил такое. В школьные годы (конец 80-х) собирал гирлянду выполненную полностью из неонок от стартеров: последовательно соединенные неонки, штук 10-15, подключаемые прямиком в сеть 220В. Такая гирлянда работала так: сначала мигала достаточно редко, но со временем (видимо лампы прогревались), ритмочность/частота увеличивалась, все лампы мигали в разнобой случайным образом. Эффект был очень клёвый. Правада приходилось изрядно полазить по помойкам в поисках выброшенных ламп дневного освещения, чтобы добыть из них рабочих стартеров. :-)
На Pi я могу писать перловые скрипты, агрегировать данные и формировать единый HTTPS запрос. К тому же это не единственная её задача. Через неё я управляю системой видеонаблюдения, да и вообще иметь Unix хост в доме весьма полезная штука. :)
Оповещения не придут только если сдохнет мой почтовый сервер или база данных, но этого незаметить достаточно сложно. Система оповещения уcтроена так, что если обновления данных в базе по какому либо датчику не произошло в течении 5 минут, то будет отослано оповещение. Оповещения шлются до тех пор, пока я не отштырю галку или не устраню проблемы с датчиком (налажу поставку обновлений данных). Я уже научен опытом, в прошлом году все произошло по Вашему сценарию, но я быстро спохватился. :-)
Сделайте пожалуйста поле Мессенджер опциональным. Не поверите, но есть люди которые не пользуются мессенджерами по принципиальным соображениям. Да, я такой.
А я вот смотрю на фотку к статье и думаю, какое было славное время. Мужики с баками и в джинсах "клёш". Вокруг дорогие приборы. Интересно, фотку тоже нейронка сгенерировала ?
Тут используется некоторая хитрожопость компилятора, который знает как подкорректировать конкретную константу чтобы при знаковом сложении получить верный результат. Этот фокус работает не для всех констант.
В ДКП ничего не понимаю, но в статье затронута интересная для меня тема - загрузка 64-битной константы в архитектуре RV64I. Недавно столкнулся с необходимостью загружать произвольную константу и не без удивление обнаружил, что код получается очень длинный. Как я не экспериментировал, менее 12 инструкций у меня не выходит. Может быть есть какой-то способ уменьшить их число ?
Ниже мой вариант. Он не использует знаковых сложений (ADDI), поэтому более понятен человеку.
PS: Пришел к выводу, что лучшее решение - загружать константы из памяти.
И где ?
ssh habra.chat не алё.
Почему геморой ? Я подписывался на журналы, пока они выходили в печать.
Почему бы и нет ?
Пока не пробовал. Занять немного другой проблемой: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=291935
В репозитории FreeBSD есть supertux-0.1.3_14 и supertux2-0.6.3_12. Версию 0.7 пока еще не завезли. Игра клёвая, играем с детьми по вечерам. :-)
Спасбо за Ваше ревью. Похоже, что Вы единственный кто смог прочесть статью целиком. :-)
На счет установки Boot Protocol принудительно. Мне где-то попадалась инфа (помоему на OSDev), что с некоторых пор все клавы и мыши, по просьбам разработчиков BIOS, по умолчанию работают в Boot протоколе. Во всяком лучае, мне пока что другие не попадались. :-) Но я подправлю код конечно же.
Есть идея расширить до USB 1.1 и сделать поддержку Mass Storage Class, чтобы загружать на ПЛИСе какую нибудь ОС.
Спасибо, Кэп!
del
И ведь таки выжили! :-)
Это он сейчас токсичный, канцерогенный и сильный наркотик. А во времена СССР в авто/авиа/судомодельных кружках дихлорэтаном клеили любой пластик - универсальное средство было. Еще помните были такие конструкторы из пластика для сборки авиамоделей, там детали от литника надо было отламывать и склеивать - в них тоже прилагался пузырек дихлорэтана. :)
Больно это 25кВ анодного напряжения от кинескопа. Все остальное радиолюбителю в радость. ;-)
Дихлорэтан!
Я вот тоже вспомнил такое. В школьные годы (конец 80-х) собирал гирлянду выполненную полностью из неонок от стартеров: последовательно соединенные неонки, штук 10-15, подключаемые прямиком в сеть 220В. Такая гирлянда работала так: сначала мигала достаточно редко, но со временем (видимо лампы прогревались), ритмочность/частота увеличивалась, все лампы мигали в разнобой случайным образом. Эффект был очень клёвый. Правада приходилось изрядно полазить по помойкам в поисках выброшенных ламп дневного освещения, чтобы добыть из них рабочих стартеров. :-)
На Pi я могу писать перловые скрипты, агрегировать данные и формировать единый HTTPS запрос. К тому же это не единственная её задача. Через неё я управляю системой видеонаблюдения, да и вообще иметь Unix хост в доме весьма полезная штука. :)
Оповещения не придут только если сдохнет мой почтовый сервер или база данных, но этого незаметить достаточно сложно. Система оповещения уcтроена так, что если обновления данных в базе по какому либо датчику не произошло в течении 5 минут, то будет отослано оповещение. Оповещения шлются до тех пор, пока я не отштырю галку или не устраню проблемы с датчиком (налажу поставку обновлений данных). Я уже научен опытом, в прошлом году все произошло по Вашему сценарию, но я быстро спохватился. :-)
Сделайте пожалуйста поле Мессенджер опциональным. Не поверите, но есть люди которые не пользуются мессенджерами по принципиальным соображениям. Да, я такой.
;-)))
Спасибо. Тогда еще вопрос: по каким проводам Вы гоняете CAN внутри дома ?