VB + ASM

Обсуждение проектов наших жителей.
Вы можете выставить проект на тест или найти помощников для его реализации.

Модератор: BV

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

VB + ASM

Сообщение GSerg » 18.03.2004 (Чт) 16:05

Друзья! :)
Вот такая фишка. Немного поковырял известный модуль для динамического вызова функций, вроде теперь он стал лучше :wink:
Хочу спросить: имеет ли смысл копать в том направлении, чтобы создать простенькую надстройку-(asm-компилятор) для VB, писать несложные функции, засовывать их в ресурсы проекта и оттуда вызывать? :) См. аттач!

Правка. Обновлённая версия ниже.
Последний раз редактировалось GSerg 28.04.2004 (Ср) 9:28, всего редактировалось 1 раз.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 22.03.2004 (Пн) 10:40

Даже не посылают...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 24.03.2004 (Ср) 19:09

Круто. :shock:
Если не будет проблемы вставлять VB переменные, типа:
Код: Выделить всё
Dim Var1 as Long, Var2 as Long

...
mov EAX, Var1
add eax, Var2
mov Var1, ECX
...

получится стоящая вещь.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 25.03.2004 (Чт) 7:05

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

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 25.03.2004 (Чт) 9:58

А если с параметрами работать только ByVal, пусть не будет строк...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 26.03.2004 (Пт) 7:43

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

Fedorfx
Постоялец
Постоялец
 
Сообщения: 371
Зарегистрирован: 10.10.2002 (Чт) 0:14

Re: VB + ASM

Сообщение Fedorfx » 27.04.2004 (Вт) 10:16

GSerg писал(а):Друзья! :)
Вот такая фишка. Немного поковырял известный модуль для динамического вызова функций, вроде теперь он стал лучше :wink:
Хочу спросить: имеет ли смысл копать в том направлении, чтобы создать простенькую надстройку-(asm-компилятор) для VB, писать несложные функции, засовывать их в ресурсы проекта и оттуда вызывать? :) См. аттач!


ИМЕЕТ. Готов быть бета тестером. Задолбала тормознутость компилятора.
Купил двухпроцессорную машину но и та тормозит :-)
P.S. Правда я не гений в оптимизации кода, но и всю вину на себя брать не буду :-)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 27.04.2004 (Вт) 10:22

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

Fedorfx
Постоялец
Постоялец
 
Сообщения: 371
Зарегистрирован: 10.10.2002 (Чт) 0:14

Сообщение Fedorfx » 27.04.2004 (Вт) 10:28

угу
меня в частности интерисует передача массивов и работа с ними.
Для примера поиск наименьшего ( наибольшего) значения в массиве в заданном диапазоне.
Вот как бы передать указатель в АСМ код??
Последний раз редактировалось Fedorfx 27.04.2004 (Вт) 10:33, всего редактировалось 1 раз.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 27.04.2004 (Вт) 10:32

Да это не проблема - указатель на первый элемент есть varptr(arr(lbound(arr))).

Компилировать-то кто будет? В асм? Я? Я не умею :) У меня только список команд есть, большой такой текстовик :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Fedorfx
Постоялец
Постоялец
 
Сообщения: 371
Зарегистрирован: 10.10.2002 (Чт) 0:14

Сообщение Fedorfx » 27.04.2004 (Вт) 10:36

ну я на готовый код не расчитываю.
Мнеб примерчик потипу
Dim a(1 to 2) as long
a(1)=1
a(2)=2
dim rez as long
а вот это на асме :-)
rez=a(1)+a(2)
А дальше моя копалка будет сама капать ( поюду сдаваться к АСМчанам)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 27.04.2004 (Вт) 10:43

Ээээ... Ну допустим... Первый параметр, допустим, указатель на начало данных массива, второй параметр - указатель на rez. Тогда...

Код: Выделить всё
mov eax, dword ptr [esp+0x4]
mov ecx, dword ptr [eax]
mov eax, dword ptr [eax+0x4]
add eax, ecx
mov ecx, dword ptr[esp+0x8]
mov dword ptr [ecx], eax
xor eax, eax
ret 0x8


ЗЫ: впервые в жизни...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 27.04.2004 (Вт) 10:51

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

Fedorfx
Постоялец
Постоялец
 
Сообщения: 371
Зарегистрирован: 10.10.2002 (Чт) 0:14

Сообщение Fedorfx » 27.04.2004 (Вт) 10:59

У меня массивы по 10 000 20 000 элементов.
Потому и ухватился за идею.
Разбираюсь с примером что вначале ветки.
Я так понимаю что если люди будут юзать асм то для повышения бысродействия. А посему, в твоем PrepareCode слишком много вызовов функций и перадача аргументов тоже время жрет. Поэтому думаю что надо капать в загрузке функций из файла ресурсов.

Получится что то типа DLL с асм функциями :-)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 28.04.2004 (Ср) 9:26

Это был не совсем мой код.
Вот код, который гораздо более мой :)
А без подстановки в нужные места инструкций push никуда не денешься.

Но знаешь что... В этом примере массив состоит из миллиона элементов. Asm-функция находит его сумму за 20 мс. VB - за 200. Но если сделать exe, то разница между VB и asm исчезает :twisted:


Ещё апдейт.
У вас нет доступа для просмотра вложений в этом сообщении.
Последний раз редактировалось GSerg 19.05.2004 (Ср) 9:06, всего редактировалось 1 раз.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Fedorfx
Постоялец
Постоялец
 
Сообщения: 371
Зарегистрирован: 10.10.2002 (Чт) 0:14

Сообщение Fedorfx » 29.04.2004 (Чт) 11:44

GSerg писал(а):Но если сделать exe, то разница между VB и asm исчезает :twisted:


Это как это??? В чем может быть дело???
И может ли быть наоборот, т.е. после компиляции VB ( ASM) код станет выполняться медленнее?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 29.04.2004 (Чт) 11:55

Ну так правильно всё :)
В IDE всё работает гораздо медленнее (неужели не знал?)
А асм как выполнялся за примерно 20 мс, так и выполняется.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Fedorfx
Постоялец
Постоялец
 
Сообщения: 371
Зарегистрирован: 10.10.2002 (Чт) 0:14

Сообщение Fedorfx » 29.04.2004 (Чт) 23:18

Осталось определить какой код в проге надо оптимизировать, а с каким компилятор и сам неплохо справится.
Спасибо за копания в этом направлении, но я скорее всего буду писать DLL на С++ и там при необходимости вставлять ASM )

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 30.04.2004 (Пт) 9:19

Да на здоровье.
Главное - асм в VB есть :P
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

BP
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 17.02.2004 (Вт) 5:34
Откуда: Украина

Сообщение BP » 12.06.2004 (Сб) 11:04

>У меня только список команд есть, большой такой текстовик

Это коды операций? Скинь пожалуйста на bp@pochtamt.com

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 12.06.2004 (Сб) 13:40

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

Шурик
Самогонщик
Самогонщик
Аватара пользователя
 
Сообщения: 1657
Зарегистрирован: 30.06.2003 (Пн) 13:27
Откуда: из запоя :))))) Матных сообщений: 972

Сообщение Шурик » 21.06.2004 (Пн) 16:07

Знаю, тема старая, но вот только что нашел у себя :D
Вот вам в помощь... может пригодится :wink: ассемблер написанный на QBASIC'е с исходниками:
У вас нет доступа для просмотра вложений в этом сообщении.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 21.06.2004 (Пн) 16:24

Где ты был раньше... Я когда-то на QB писал компилятор собственного языка. Сделал уже компиляцию в ASM-код и на этом затормозился. А он, между прочим, компилился TASM-ом, получалось не слабое быстродействие.

Шурик
Самогонщик
Самогонщик
Аватара пользователя
 
Сообщения: 1657
Зарегистрирован: 30.06.2003 (Пн) 13:27
Откуда: из запоя :))))) Матных сообщений: 972

Сообщение Шурик » 21.06.2004 (Пн) 16:50

Mikle писал(а):Где ты был раньше... Я когда-то на QB писал компилятор собственного языка. Сделал уже компиляцию в ASM-код и на этом затормозился. А он, между прочим, компилился TASM-ом, получалось не слабое быстродействие.

Где, где??? Пиво пил :mrgreen: Вот увидел у себя в архиве эту штуку и вспомнил про этот топик :) Наверно я долго пил........ :lol:

BP
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 17.02.2004 (Вт) 5:34
Откуда: Украина

Сообщение BP » 02.07.2004 (Пт) 18:35

Вот вам в помощь... может пригодится ассемблер написанный на QBASIC'е с исходниками:


Хороший компилятор. Жаль только что 16-битный. Да я его особо и не ковырял ...пока не ковырял.

BP
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 17.02.2004 (Вт) 5:34
Откуда: Украина

Сообщение BP » 07.07.2004 (Ср) 21:30

Что вы скажете по поводу названия VB LASM
Local Assembler for VB
Local потому что через CallWindowProc исполняется.

BP
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 17.02.2004 (Вт) 5:34
Откуда: Украина

Сообщение BP » 11.07.2004 (Вс) 21:25

Програмеры,
Я вот хелп написал к моему ассемблеру.
Потестите если не в лом.
http://basicproduction.nm.ru/ASM/LASM/lasm.rar

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 11.07.2004 (Вс) 21:34

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

BP
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 17.02.2004 (Вт) 5:34
Откуда: Украина

Сообщение BP » 11.07.2004 (Вс) 23:58

Хорошо хоть есть люди, которые могут сказать это до выхода конечного продукта.
Т.е. мой английский совсем ни к чёрту? Прийдётся пойти побираться :) на masmforum.com или powerbasic.com

BP
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 17.02.2004 (Вт) 5:34
Откуда: Украина

Сообщение BP » 12.07.2004 (Пн) 17:06

Уже готово IDE
Потестите:
http://basicproduction.nm.ru/ASM/LASM/LASMIDE.rar

След.

Вернуться в Наши проекты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 22

    TopList