логин: 
<< предыдущая заметкаследующая заметка >>
09 марта 2017
Реверс-инжениринг assembler-python

21 год назад, весной 1996 года я заканчивал Горный институт и писал дипломный проект по программированию. Основа заданий у всех дипломников кафедры называлась «базы данных». В то время базы данных для студентов было такое же мифическое существо, как протокол TCP/IP — в реальной жизни мы такого не видали: ни интернета, ни баз данных у нас в институтских компьютерных классах не водилось. Тот, кто параллельно с учебой работал на предприятиях, возможно, что-то такое видел у себя на работе. А я параллельно с учебой писал песенки в «ОСП-студии», тайно учился на вечернем факультете Психфака МГУ, а еще подрабатывал программистом в НИИ Геофизика и НТМ Защита при МИФИ — там я писал на ассемблере код для микроконтроллеров в приборах дозиметрии и геологоразведки. Иными словами, я не был нормальным человеком, который мог и хотел по-быстрому написать диплом по базам данных на языке C. Поэтому я замахнулся создать программу, которая бы сочиняла стихи. А поскольку хорошо себя чувствовал только на ассемблере, то и написал ее на ассемблере. Тогдашнем, DOS-овском, 32-разрядном. И базу данных свою там же, на этом ассемблере, сочинил. Мои руководители были добры и терпеливы. Не разбираясь по долгу службы ни в алгоритмах стихосложения, ни в ассемблере, они позволили мне делать эту фигню и до последнего дня верили моим клятвам, что хоть программа моя пока не работает, но точно будет работать ко дню защиты. Так и случилось: последние изменения в код я вносил утром. На моем сайте этот проект все эти годы лежит здесь: http://lleo.me/soft/lleo_dip.htm Там сам код на ассемблере (по-моему даже не самой последней версии, но остальные исходники точно утеряны), и текст дипломного проекта, тоже написанный с большим литературным чувством и элементами троллинга. Смешно, что все эти годы программка по-прежнему работала, если найти эмулятор DOS и в нем ее запустить. И все эти годы у меня была мысль переписать это на PHP и сделать веб-сервис — ведь за это время появился интернет и база ударений в словах русского языка, которой мне так не хватало. Но я так и не собрался. И вот на днях мне пришло изумительное письмо:

Date: Sat, 4 Mar 2017 10:40:19 +0300
From: Sergei Lebedev
Subj: lleo_dip — revival

Здравствуйте, Леонид,

Думаю, вам будет интересно узнать, что я портировал на Python алгоритм вашей программы lleo_dip.exe (с некоторыми доработками).

Вот статья об этом на Хабре: https://habrahabr.ru/post/323034/

А вот исходники на github: https://github.com/lebedevsergey/poet-ex-machina

Кстати, новая программа умеет загружать базу слов и базу слогов в формате вашей программы, так что я приложил их в комплекте

С уважением,

Сергей Лебедев

Представляете, каков подвиг?! Сергей, я потрясен. У меня нет слов! Может быть, прикрутим базу ударений? ;)

<< предыдущая заметка следующая заметка >>
пожаловаться на эту публикацию администрации портала
архив понравившихся мне ссылок
Оставить комментарий
Linux Ubuntu Firefox
 Израиль
20
0
200-1.95M
LoadRunner 3 марта 2017 в 13:31
+3
рандом программа рифма слово
размер синоним да и слог
питон ассемблер выходные
не смог
Windows Safari Chrome
 Домодедово
2
0
id
"Иногда они возвращаются..." (с)

:)

Ну и про этот "наезд":
> Справедливости ради, замечу, что продвинутые люди в то время пользовались расширителем PMODE/W by Tran, где такой ерунды нет, который заметно меньше по размеру, бесплатен, и умеет приписываться к программе, в то время, как DOS/4GW обычно лежит в виде отдельного исполняемого файла.

Подумал, что сам был "непродвинутым" в то время, раз про PMODE ровным счетом ничего не слышал... Погуглил. Таки да, мы правы, а Сергей - нет: PMODE появился в конце 90х и стоил немалые $500, а бесплатным стал с 2002 года - когда мир уже вовсю накатывал первый сервиспак на Windows XP. :)
Linux Ubuntu Firefox
 Москва
0
0
Leonid Kaganov
У меня было проще: друзья (Димка Лемехов и Ринат Садретдинов) помогли мне настроить на компьютере какой-то компилятор ассемблера, и я им отныне пользовался, не вдаваясь в подробности. Считаю, что это очень полезно - не вдаваться подробности, которые через несколько лет безнадежно устареют ;) Проблема, как мне помнится, у меня была одна: моей базе в какой-то момент на больших текстах не хватало 640кб ОЗУ, и приходилось как-то память расширять. Для этого я и использовал расширенный компилятор, который умел работать с большой памятью.
Windows Safari Chrome
 Домодедово
0
0
id
Ну да, это понятно. И решение было правильным: не корячиться с окнами xms, а сразу писать в 32-разрядном режиме. И способ был очевидным: использовать DOS/4GW, как все. И ассемблер был выбран правильный :) так что Дмитрию и Ринату - респект и уважуха.
Просто сейчас увидел у Сергея "продвинутые пользовались PMODE", и задумался: с памятью что-то стало что ли?.. Ан нет, все в порядке с памятью! :)
Windows Firefox
 Санкт-Петербург
1
0
Tarn
"...не корячиться с окнами xms..."

Окна, вроде, были EMS, а XMS как раз и была поддержка 32-разрядной адресации, не?
Windows Safari Chrome
 Домодедово
0
0
id
Давно было, не помню :)
Windows Firefox
 Великобритания
0
0
Хлорофилл
Всё тот же QEMM386, а для полноценной 32-разрядной адресации QDPMI, через этот самый DPMI можно было залезать куда угодно.
Windows Firefox
 Ebene
1
0
Хлорофилл
А можно было просто A20 открыть, увеличить лимиты сегметов через загрузку собственной GDT и получить настоящий flat mode не выходя из реального режима DOS :-)
Windows Safari Chrome
 Домодедово
0
0
id
Это реально работало?

То, что работал фокус с LIDT - это я помню :) любил прикалываться над народом: "а теперь мы запишем всякий бред начиная с нулевого адреса и дальше... ой? все продолжает работать..."

А фокус с увеличением размера сегментов вроде был чуть более сложен, чем "просто загрузить GDT": он требовал 386+ машины, перехода в защищенный режим, и обратного перехода в реальный.

Но практической пользы - ноль, так как в реальной жизни чтобы использовать всю эту память "властной рукой", нужно же как-то отслеживать ее использование другими программами - всякими himem, emm386 и всем тем что работало под ними...

Большой и ненужный геморрой. DOS4GW - проще :)
Linux Firefox
 Москва
0
0
Фыва Олдж Jr (#6703127)
Это был не какой-то компилятор ассемблера, а обычный tasm. Правда вот для линковки вместе с dos4gw вроде бы мы туда вкрячили вместо tlink ваткомовский wlink. Не помню уже подробностей за давностью лет.
Linux Firefox
 Москва
0
0
Фыва Jr Олдж
Вот как завести нового пользователя? Я попробовал было завести "Фыва Олдж Jr" да не вышло. Один камент вот оставил, а в следующий раз под этим именем ведь не даст, скажет что "такое имя уже используется" и придётся городить "Фыва Олдж Jr 1", в следующий раз "Фыва Олдж Jr 2" и т.д. А Фыва Jr Олдж я не хочу, мне не надо видеть подзамочные заметки, мне не надо видеть скрытые комментарии, мне не нужна возможность банить направо и налево "первоходов", мне неинтересно видеть с какого IP кто пишет, мне не нужны все прочие льготы, я хочу быть обычным человеком, я хочу быть таким, каким был Ленин, каким был Сталин, каким сейчас является Путин.
Linux Firefox
 Москва
0
0
Фыва Олдж Jr_1 (#6703933)
Вот и всё! Вот и приходится теперь огороды городить.
Windows Safari Chrome
 Москва
0
0
Михаил
> это очень полезно - не вдаваться подробности, которые через несколько лет безнадежно устареют ;)

Умом понимаю верность сего утверждения, но натура моя этот подход не приемлет :-(.
Linux Ubuntu Firefox
 Одесса
3
0
Azimut
сперва ударения, потом "ой, а как же свободные, безударные, тоновые", 100500 замечаний, просодия, интонация и вариации


а потом сразу Бостондинамикс с цветами к Вашей жене :-)
Windows Firefox
 Германия
5
0
Глеб
План "Путина"
План Путина
Mac Safari
 Москва
5
0
Maxim2222 (#6601929)
Грозный Генька-генератор грубо грыз горох горстями…
Linux Ubuntu Firefox
 Германия
0
0
gehrmann
Леонид, вам уже наверняка кто-то присылал, но какая-то верятность, что нет, всё-таки остаётся: http://realchinatea.ru/about/for-blogers
Linux Ubuntu Firefox
 Израиль
1
0
200-1.95M
Windows Firefox
 Германия
2
0
Глеб
Отлично. А то давно уже не было новых стихов про заебись-предложения.
Linux Ubuntu Firefox
 Москва
4
0
Leonid Kaganov
Посылка с чаем за обзор в блоге? Спасибо за вопрос. Нет конечно.

Дело в том, что я ОЧЕНЬ ценю ваше время и ваше внимание. Ваше - это лично ваше и остальных читателей. Я стараюсь делать так, чтобы в моем блоге рекламу вы видели как можно реже, и чтобы эта реклама была интересной и полезной. Именно поэтому у меня такой тариф в рекламной политике http://lleo.me/reklama 30 тыс руб за пост - чтобы реже обращались. Именно поэтому часть предложений я отклоняю (или вежливо назначаю ценник 50 тыс, чтоб точно сами отказались), если у меня есть подозрения, что вещь мне по каким-то причинам не следует рекламировать.

Нет проблемы набрать халявных шмоток или дешевых заказов, завалив блог рекламными обзорчиками. Проблема - сохранить блог в чистоте с минимумом рекламы. Это я и пытаюсь делать.

А что касается чая - мне постоянно предлагают рекламировать чайные магазины. И пост про чай я обязательно напишу рано или поздно. Но бесплатно, и про чайный магазин одного знакомого, у которого действительно очень интересные сорта.

PS: А если кто интересуется чаем, скажу, что в Москве (вы в Германии вам не светит точно) появился тибетский пакетированный чай производства Гонконга: три в одном - пудра зеленого чая, сухое молоко, соль. Он же монгольский. Он же бурятский. Раньше я привозил его из Иркутска (там он под ярлыком "монгольский", хотя того же производителя), а теперь он продается у нас у м.Пражская на рынке в чайной палатке в правом углу после входа. Офигенная вещь:

Linux Ubuntu Firefox
 Германия
0
0
gehrmann
"и про чайный магазин одного знакомого, у которого действительно очень интересные сорта" : D

Абсолютно незаангажировано, что чайный магазин в Москве в сравнении с поставщиком из Китая...
Linux Safari Chrome
 Los Angeles
0
0
centrist
Что поставщик из Китая, по сравнению с покупкой в Китае напрямую
Windows Firefox
 Германия
3
0
Глеб
Что покупка по сравнению с личным сбором.
Windows Safari Chrome
 Астрахань
0
0
V_Okorokov
У нас в Астрахани его называют "калмыцким". В классическом виде продается в виде плиток из чая (вроде зеленого), которые надо варить в молоке. Если этот понравился - советую поискать и приготовить обычный вариант, не "3 в 1"
Windows Firefox
 Германия
2
0
Глеб
Про калмыцкий чай ещё Пушкин писал:
— Вряд ли какая другая кухня мира могла изобрести напиток гаже этого.

С тех пор всё собираюсь попробовать, да всё как-то не соберусь. :)
Safari
 Самара
0
0
Надоело_Перелогиниваться (#5304698)
Я тоже пил такой под названием "калмыцкий". А монгольский, вроде, должен быть не с молоком, а с жиром (курдючным или что-то вроде этого)?
Windows Safari Chrome
 Каменск-Уральский
0
0
D.iK.iJ
А ссылку на магазин знакомого можно хоть?
Windows Firefox
 Санкт-Петербург
1
0
Tarn
А мне понравилось:
"Что делать, если у вас нет своего популярного блога? Расскажите об этом тому, у кого есть. И станьте соучастником )".
Windows Firefox
 Германия
0
0
Глеб
Ну да. Блогер же вас пошлёт на почту посылку забирать.
Windows
 Atlanta
2
2
ВМК (#6598441)
> в реальной жизни мы такого не видали: ни интернета, ни баз данных у нас в институтских компьютерных классах не водилось.

Это в 96-м? Ойнудаладна. DBase II/III был вокруг ваще с конца 80-х, в 91-м уже предприятия гоняли на ЕС-ках вовсю, я после школы деньгу зашибал. В 92/3-м foxbase/foxpro.

96-й, это, я извиняюсь, Oracle 7.3 в феврале вышел. 7.1 был уже два года как. Банки его вовсю держали, на горбушке брался на раз-два для энтузазистов.

Informix ODS 7.0 был на рынке уже два года как, на комтеке-95 одних московских интеграторов/дистрибуторов было штук десять.

Ровесник
Linux Ubuntu Firefox
 Москва
5
0
Leonid Kaganov
Вы прямо как в Википедии родились. Мало ли что где было? Первый стандарт SQL был принят в 1989, первые базы данных появились вообще в 1960-х. И что? Как это соотносится с тем фактом, что в 1996 в жизни студентов кафедры АИ базы данных как таковые отсутствовали чуть менее, чем полностью?

Еще скажите, что интернет был в 1996. Ну да, был. В Калифорнии, например. Или вот в институте Курчатова дофига интернета было. Анекдотов в конференции Relcom обчитайся и обраспечатывайся на служебном принтере. Но я там не работал. Но мне перепадало немножко интернета от друзей, работавших в первых провайдерских конторах - дали на халяву номерок телефона и логин, я раз в пару месяцев прозванивался на минуту и забирал почту [email protected], считался от этого очень прошаренным компьютерщиком. У остальных и такого интернета не было еще лет пять-десять. А у меня первая версия сайта http://aha.ru/~lleo появилась в декабре 1996. Яндекса с Гуглем еще не было, а мой сайт уже был, какие-то файлики там можно было скачать. Сайт, кстати, работает до сих пор - 21 год это дверь именно на мой сайт, переживший пару косметических изменений в имени (aha.ru/~lleo - lleo.aha.ru - lleo.me). И что? Ну да, мне повезло в области веба, что у меня все это в 1996 уже было, не моя заслуга в общем-то. Мне теперь бегать всем рассказывать "ойнудаладна, у всех интернет был в 1996, у всех сайты уже работали"?
Windows Firefox
 Санкт-Петербург
0
0
Tarn
"...весной 1996 года я заканчивал Горный институт... В то время базы данных для студентов было такое же мифическое существо, как протокол TCP/IP — в реальной жизни мы такого не видали: ни интернета, ни баз данных у нас в институтских компьютерных классах не водилось".

Ну... Леонид, побойтесь б-га, программисты на всяких госпредприятиях, да и в частных конторах, к тому моменту почти ничем кроме писания всякого говна но Фокспре и Клиппере уже и не занимались.
Linux Ubuntu Firefox
 Владимир
0
0
Adamos
Вообще-то интернет в 1996 году таки действительно был не только в Калифорнии. Я вот даже не видел курчатовских институтов, но почту на chat.ru завел именно в этом году. Не выезжая из нашей глубинки.
Linux Safari Chrome
 Новосибирск
0
0
&amp;#19978;&amp;#37096;
Ну да, в Новосибирске в 1996 в институте интернет был.
Даже можно было скачать Линукс (Slackware) со скоростью 1 килобайт в секунду, принести домой на дискетах и поставить на компьютер, который в этом же году и купил.
А телефона (у меня) не было до 1999.
Windows Safari Chrome
 Великобритания
0
0
ircicq (#4554986)
Если вы захаживали в МГУ, то там и c 1993/1994 был. Relcom назывался.
Связь была через курчатовку скорее всего.
Скачать можно было что угодно по FTP via Email.
Windows Firefox
 Richardson
0
0
Nekto (#5730633)
Все правы, что тут скажешь. Я с другом в 1994-95 годах с Oracle7 начал разбираться (привез в наш университет залетный американский профессор в комплекте с сервером под полуосью и отксеренными доками), а лекции в то же время нам по Foxpro читали. Интернет и в универе был и кое-где в коммерческих структурах, но не так, чтобы густо - первое время с гофера на линкс перебивались.
Windows Firefox
 Санкт-Петербург
2
0
Tarn
Clipper ещё вовсю рулил.
Windows Firefox
 Великобритания
0
0
Хлорофилл
Без "ещё". В те времена рулил как раз Clipper и было мало мало dbase, других баз данных не было. Во всяком случае в СССР.
Mac Safari
 Alexander Yanai Petach Tikva
0
0
braintunic
> других баз данных не было. Во всяком случае в СССР

Не совсем так.
Кое-где, например, в том же Курчатовском институте, был даже Ingres на Unix (кажется, на VAX BSD или Ultrix).

(Ingres - это прародитель многих современных баз данных, например, Postgres и Microsoft SQL Server)
Windows Firefox
 Research Triangle Park
0
0
Хлорофилл
Я про программы тех времён которые кучами писались сотрудниками IT отделов предприятий для бухгалтерий тех же предприятий когда ещё не было стандартного для всех 1С и каждый дудел в сою дуду. Вот там Clipper был весьма популярен.
Windows Safari Chrome
 Великобритания
1
0
ircicq (#4554986)
Для тех кто писал на Borland C++/Pascal - самый естественный выбор БД - Paradox.
В 1995 уже очень распространен был.
Windows Firefox
 Норвегия
0
0
Хлорофилл
Да, Paradox, как же я про него забыл. Было такое дело, его мне тоже довелось осязать, но это были уже не бухгалтерские программы для отдельно взятого предприятия. А самопис для бухгалтерий в основном делали именно на Clipper. Вот Clipper меня миновал, в нашем IT отделе я занимался другим. А коллега постоянно улучшал и исправлял клипперный самопис для нашей бухгалтерии.

PS: вспомнил вдруг что кроме Clipper для бухгалтерий в те времена был популярен ещё Clarion, это было уже у наших смежников. Это в принципе не чистая база данных, а язык такой, но именно бухгалтерские базы на нём и лепили.
Windows Safari Chrome
 Домодедово
1
0
id
foxpro все же стал мейнстримом чуть позже, а в начале 90х обычно пользовали clipper. Ну а люди попроще писали на ассемблере собственный движок dbaseIII (я его даже под Spectrum писал).

Ну и что? У каждого ж своя специфика жизни была. В том же 92м году московские ребята все сплошь фидошники были - а я модем впервые так вот в гостях и увидел. Потому что Москву отлично видно с балкона - вот она, как на ладони - а перспектив установить телефон (какой московский?!! местный!) в ближайшем столетии ровно ноль.
Так и дожил до XXI века - из всех средств связи только CB рация да "тапочная сеть". Бытие - оно, увы, определяет.
Windows Safari Chrome
 Киев
0
0
Большой мажорный септакорд (#5725993)
Из Атланты, США пишут. Голос Америки. Там в прохладных офисах из стекла и бетона на вычислителях производства "Международных Бизнес-Машин" (IBM PC в 1981) работали базы данных "Оракул" (основана в 1977) и всё такое.
Windows Safari Chrome
 Домодедово
0
0
id
Мы счастливы за Атланту и желаем ей всех благ как в те годы, так и сейчас и после.
Но таки в наших палестинах рулил dBase, а вовсе не Oracle.
Windows Safari Chrome
 Киев
0
0
Большой мажорный септакорд (#5725993)
Ellison read a paper published by IBM about a new kind of database programming language called SQL. Ellison took that paper and turned SQL into a database. In 1977 he founded Software Development Labs with his former boss, Robert Miner, along with Ed Oates and Bruce Scott. The CIA hired the young company to build this new kind of database that they code-named Oracle
Windows Safari Chrome
 Киев
0
0
Большой мажорный септакорд (#5725993)
>Кроме того, на современной машине (486,Pentium) >скорость сочинения все равно во много раз >превосходит скорость прочтения человеком.

А где приоритетные слова указывать? В дипломе написано можно на свою тему фигачить стихи.
Windows Safari Chrome
 Чехия
0
0
atheist
Спешу поделиться своим опытом создания программы для написания стихов. События происходили в 1983 году в НГУ. Началось все с того, что товарищ с нашего потока, вернувшись из поездки к родителям, привез стихотворное произведение своего одноклассника. Стихи отличались некоторым своеобразием и завоевали достаточно широкую известность в узких кругах :-) Повествовалось там о неком человеке по имени Теплотрасса. Приведу отрывок, чтобы было понятно о чем речь:

Восвояси чтоб убраться
Приходилось Теплотрассе
Пробираться сквозь коровник
Там где лоси собирались
После долгих рассуждений
На досуге

В общем возникло желание сделать что то автоматическое, способное на имитацию подобного творчества :-) Программа оперировала не словарем, как таковым, а набором шаблонов слов, слова были представлены как последовательности бит, где каждый бит представлял ударный либо безударный слог. Были еще некие тонкости, в целом это уже неважно. Далее существовали уже реальные словари, где шаблону соответствовало некое слово. Причем словари подбирались вручную, чтобы слова в нем подходили под некую заданную тематику. Ну или смешанную, чтобы получить шедевры типа:

Дешифратор темнозадый
Что для девушки блаженство

Система в терминальных классах НГУ в те годы позволяла перенаправить вывод либо на терминал, либо на DZM-180, расположенную в классе, либо на чудовищной производительности АЦПУ, расположенное в отдельном зале. Естественно, однажды вывод был перенаправлен именно туда. Следует отметить, что в программе не был предусмотрен собственный останов. Прерывалась она только средствами системы исполнения :-) Если кто не помнит что такое АЦПУ, скажу что бумага в него заправлялась в виде огромного типографского рулона, а скорость печати была около 1000 строк в минуту. По счастью на тот момент рулон уже был далеко не полный, но все равно бумаги мы получили настолько много, что еще многие месяцы посетители сортира в общаге могли наслаждаться машинным творчеством :-)

Как сказано у классика "и так хороши были эти стихи, что других стихов в очереди уже не читали."
Windows Firefox
 Апатиты
0
0
boykov
эк горный отставал от вятского политеха.
уж не помню что я там ваял на фокспро, но стихи писал на прологе.
а на ассемблере лишь всякие кружащиеся линии в нестандартных веса режимах. да, макросами развертывал перемножение матриц 4х4 в линейный код. куда деваться.

всего комментариев: 57

<< предыдущая заметка следующая заметка >>