Вверх ↑
Ответов: 2059
Рейтинг: 131
#1: 2015-05-01 18:20:27 ЛС | профиль | цитата
Вот выложил, что обещал. https://yadi.sk/d/t9ahKVuYgNVky
Перенёс из темы "Qt и пакет Windows.", чтобы там не мусорить.
1. В папке .SP-ForthSPForth_DLL исходники программы для создания dll.
В папке .SP-ForthSPForth_DLLspfscript пример скрипта для создания функций dll.
Аналог IC скрипта в примере, что я приводил.
Это моя первая программа на Hiasm, так что... Переделывать не хочу. Дорога, как память.
Файл .SP-Forthsrcspf2.f нужен для получения spf4_1.exe со смещением, spf4_0.exe без смещения.
Нужны для получения Relocation table. Иконки тоже вырезаны.

2. В папке devel~lllAssemb исходники получения ассемблерного кода для пакета Windows delphi7.
Для delphi4 нужно под рихтовать закомментированые строки, чтобы кроме мнемоники печатались дампы команд.
Дельфи4 в Hiacm не понимает некоторые команды ассемблерного кода. Надо заменять ручками.
Вот так:
@574E04:
db $81,$7C,$24,$0C,$01,$00,$00,$00
JGE @574E3F
MOV ECX , [ESP +20]
OR ECX , ECX
Запускаем TEST3.f и получаем lll.log с кодом. Для запуска *.f лучше сделать ассоциацию с spf4.exe.
В дельфи коде нужно вставить такой кусок:
Function MatchPattern(const cStr:string; strlen:Integer; const cMask:string; wclen:Integer): Integer; pascal;
asm MOV EAX , 0
MOV DWORD [l2],EAX
MOV EAX , [EBP + 20]
SUB EAX , 1
MOV DWORD [PK],EAX
MOV EAX , ESP
SUB ESP , $F80
MOV EBP, DWORD [EAX+4]
PUSH EBP
MOV EBP, DWORD [EAX]
PUSH EBP
MOV EBP , EAX
ADD EBP , $C
PUSH EBX
PUSH ESI
PUSH EDI
MOV EAX , -4[EBP]
CALL @@Flint2 переход на метку твоей программы на ассемблере
LEA EBP , -4[EBP]
MOV $0[EBP] , EAX
POP EDI
POP ESI
POP EBX
MOV EAX , ESP
MOV ESP , EBP
MOV EBP , [EAX]
MOV EAX , 4[EAX]
XCHG EAX , [ESP]
RET
Далее твой код на ассемблере из файла lll.log.
Это организация второго стека и передача туда параметров.
Само собой параметры приведены для примера и могут быт другими, или совсем не быть.

3. Откуда ноги растут?
Мне нужно было проверить одну мою теорию в компьютерной лингвистике.
Что это такое можно почитать здесь:
http://nlpub.ru/
http://habrahabr.ru/post/148124/
http://geektimes.ru/post/80081/
https://tech.yandex.ru/tomita/
http://habrahabr.ru/post/229403/
http://markup.dusi.mobi/
http://project.phil.spbu.ru/AGFL/rus/index.htm
http://habrahabr.ru/post/137799/
http://solarix.ru/
http://geektimes.ru/post/109382/

Так как я в программировании ни бум-бум, мне показалось, что SPForth лёгок для понимания чайника.
Решил обкатать свою идею на нём. Получилось не плохо!
Но потом потребовалась графика, opengl в том числе. Стал икать на чём можно сделать. Нашел Hiasm.
Сделал лингвистический процессор на Hiasm. Сейчас порядка 30 компонентов.
Джентельменский набор: Графематический анализ, Морфологический анализ, Морфологический словарь, Синтаксический анализ, Семантический анализ, Перевод на английский и обратно, Построение дерева разбора. По качеству и скорости разбора, пониманию текста и снятию лексико-семантической омонимии круче чем у AOT и Яндекса.
Дополнительные компоненты: Пролог для delphi4 - 12 компонентов, нейронные сети - 8 компонентов. (пока в стадии доработки).
Вот программка с использованием этих технологий по моей методе. https://yadi.sk/d/vmsqeDaSf53ms
( не надо пытаться запустить Редактор_new.sha, потому что в архиве нет нужных компонентов и дополнительных файлов. Компилятор delphi7.)
Это вторая программа сделанная мной на Hiasm, так что... взятки - гладки.
Программа снимает омонимию и делает разметку текста ударениями для TTS голосов.
На первую вкладку перетаскивается файл и нажимается кнопка со стартовым флажком.
Есть более новые программы, но они более академичны и понятны для тех, кто в этой кухне варится.
На одной из вкладок есть пример синтаксического и морфологического анализа. Надо только вставить в окно своё предложение.
Если будет интересно, то могу периодически выкладывать компоненты по этой тематике.

карма: 6

0