об охуевших железячниках

Dec 11, 2014 03:27

А вот еще постом jakobz навеяло.

Когда я работал в маленькой психиатрической конторе... Короче, у нас было железо. И к железу, ясное дело, были драйвера, которые и были нашим продуктом. И был интерфейс между железом и драйвером, и в какой-то момент это всё доэволюционировало до состояния, когда у людей в мозгах чего-то щелкает и они решают улучшить работающий код.

Короче. Решение, долженствующее невероятно продвинуть искусство коммуникации железа с драйвером, представляло собой виртуальную машину навроде ACPI, только наколеночную. То есть, из железа, натурально, вычитывались таблицы, которые потом специальный шматок кода, состоявший в основном из switch/case и goto, со скрежетом внутри себя эмулировал.

Все бы ничего, но машину-то делали на коленке, и почему-то забыли предусмотреть там методы коммуникации программы внутри виртуальной машины с хостом. Поэтому, ЛЮБАЯ ошибка, ЛЮБОЙ чих, когда коду что-то не нравилось, обрабатывались единственным доступным способом - ВПАДЕНИЕМ ПРОГРАММЫ В БЕСКОНЕЧНЫЙ ЦИКЛ. То есть, формально говоря, драйвер не вешался, энтот эмулятор там внутри себя чего-то бодро молотил, процессор уверенно грелся и всё такое. Чтобы понять, что что-то идет не так, надо было влезть дебаггером в кишки эмулятора и посмотреть, а по каким, собственно, адресам он ходит. Разумеется, разным ошибкам соответствовали разные адреса, что и было основным методом диагностики. Вишенка на торте: по какой-то прихоти судьбы, ВМ не имела команды "jmp туда-то", и поэтому реализация бесконечного цикла занимала 3-5 команд, причем, почему-то не подряд. То есть, вот прямо так взять и посмотреть что там исполняется местный эквивалент команды "10: goto 10" не получалось, надо было прокручивать в голове последние штуки три команды.

Почему? Да ни почему, because fuck you, that's why. Потому что железячники, которые ничего вокруг, кроме своего байтоёбства не видят. Правильно там в комментах сказали: выгнать и софтваризовать всё.

rant, какой пиздец, программизм

Previous post Next post
Up