powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Виртуальный ассемблер для виртуальной стековой машины.
23 сообщений из 98, страница 4 из 4
Виртуальный ассемблер для виртуальной стековой машины.
    #39150609
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EoltФункции стека можно реализовать с использованием массива переменной длинны, или буфера памяти выделяемого через VirtualAlloc
Будет ли стек виден как "другая память" внутри нашего процессора. То есть, на уровне инструкций этого псевдо-процессора стек будет просто отдельным "закрытым" устройством или он будет объединен с "другая памятью" и просто предоставлять к ней доступ (как стек в классических процессорах, просто доступ в память по указателю SP/BP)

Ну и другой ключевой вопрос:
Откуда будет поступать инструкции
Как они будут идентифицироваться

В принципе, исполнительное устройство тоже команды может брать из другого (очередного) стека ))) Т.е. будет 3-х/4-х стековая машина:

стек инструкций
стек данных
стек возврата (сохраненное состояние, которое нужно восстановить при возврате из подпрограмм/прерываний)
дополнительный стек для временных данных - х.з. зачем, но подозреваю, что ряд алгоритмов заточенных под стековые машины без него будет тяжело переносить.
...
Рейтинг: 0 / 0
Виртуальный ассемблер для виртуальной стековой машины.
    #39150613
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Leonid Kudryavtsev
Вроде так и не сказано, "зачем это надо?".
[/quot]

Например я хочу засекретить работу какого-нибудь участка кода программы. Если его скомпилировать в нативное приложение, хакер используя дизассемблер и отладчик легко поймет логику работы и взломает программу. Но если его скомпилировать в код виртуальной машины, просто взлом уже не возможен, нужен как минимум сложный анализ работы ВМ, что сильно удорожает взлом.
...
Рейтинг: 0 / 0
Виртуальный ассемблер для виртуальной стековой машины.
    #39150661
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eolt[
Например я хочу засекретить работу какого-нибудь участка кода программы. Если его скомпилировать в нативное приложение, хакер используя дизассемблер и отладчик легко поймет логику работы и взломает программу. Но если его скомпилировать в код виртуальной машины, просто взлом уже не возможен, нужен как минимум сложный анализ работы ВМ, что сильно удорожает взлом.

Мне кажется что хакеру не нужно реверс-инжинерить весь алгоритм. Возможно я не знаю специфики
их работы но основное направление хакерства - это ломание процедуры проверки регистрации. Для этого не нужно
реверсить всё. И сильно сомневаюсь что хакер глубоко копает идеи. Он - практик.

Если вы хотите спасать вашу идею или ноу-хау от кражи - то тут мне кажется лучше защищаться
как-то по другому. Продавать не приложение а сервис там... Продавать физическое устройство
без которого ваше ПО не работает. USB-брелок. Не уверен что это на 100% удобно. Надо
курить форумы железячников. Но вобщем как-то так.
...
Рейтинг: 0 / 0
Виртуальный ассемблер для виртуальной стековой машины.
    #39150778
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторпримитивные типы данных (любые которые укладываются в диапазон от 8 до 128 бит)
int 8,16,32,64,128?
float 16,32,64,128 ?
битовые наборы, короткие строки?

SSE/AVX что-то напоминает

Eolt. JIT - отсуствует
а как же скорость обеспечить?
...
Рейтинг: 0 / 0
Виртуальный ассемблер для виртуальной стековой машины.
    #39150821
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропила как же скорость обеспечить?

написать полноценный компилятор из байткода в нативный код
...
Рейтинг: 0 / 0
Виртуальный ассемблер для виртуальной стековой машины.
    #39150824
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EoltИзопропила как же скорость обеспечить?

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

Я где-то читал что Касперыч использует подобную вирт-машину.
И вроде-бы она от версии к версии меняет свой микро-код.
...
Рейтинг: 0 / 0
Виртуальный ассемблер для виртуальной стековой машины.
    #39150826
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНа написание хорошего компиллятора уходят годы.

Тут не C++ надо компилировать, а код типа:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
0  dconst_0	// Записать в стек 0.0 с типом double
1  dstore_1	// Загрузить в локальные переменные с именами 1 и 2
2  goto 9	// При первом проходе не увеличивать счётчик
5  dload_1	// Записать в стек локальные переменные 1 и 2
6  dconst_1	// Записать в стек 1.0 с типом double
7  dadd		// Сложить; инструкции dinc нет
8  dstore_1	// Загрузить в локальные переменные с именами 1 и 2
9  dload_1	// Записать в стек локальные переменные 1 и 2
10 ldc2_w #4	// Записать в стек 100.0 с типом double
13 dcmpg	// Инструкции if_dcmplt нет
14 iflt 5	// Сравнить и повторить цикл, если результат «меньше» (i < 100.0)
17 return	// Вернуть пустой тип после завершения



Это даже не компилятор, а транслятор из одного низкоуровневого языка в другой
...
Рейтинг: 0 / 0
Виртуальный ассемблер для виртуальной стековой машины.
    #39150832
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EoltЭто даже не компилятор, а транслятор из одного низкоуровневого языка в другой
В какой?
...
Рейтинг: 0 / 0
Виртуальный ассемблер для виртуальной стековой машины.
    #39150838
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonEoltЭто даже не компилятор, а транслятор из одного низкоуровневого языка в другой
В какой?

Байткод в ассемблер x86
...
Рейтинг: 0 / 0
Виртуальный ассемблер для виртуальной стековой машины.
    #39150843
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eoltmaytonпропущено...

В какой?

Байткод в ассемблер x86
Бро. Тут есть какие-то взаимоисключающие параграфы.
...
Рейтинг: 0 / 0
Виртуальный ассемблер для виртуальной стековой машины.
    #39150868
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скомпилировал и выполнил первый рабочий код
Выражение: 1+2+3-7

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Nop
iPush 1
iPush 2
iPush 3
iAdd
iAdd
iPush 7
iSub
Peek 
End



в бинарном виде код занял 88 байт, потому как добавлены поля для отладочной информации.
В режиме Release размер будет меньше
...
Рейтинг: 0 / 0
Виртуальный ассемблер для виртуальной стековой машины.
    #39150911
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eoltmaytonпропущено...

В какой?

Байткод в ассемблер x86
ИМХУ Антивирусы поубивают такую нездоровую активность.
...
Рейтинг: 0 / 0
Виртуальный ассемблер для виртуальной стековой машины.
    #39150945
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevНу и другой ключевой вопрос:
Откуда будет поступать инструкции

Поскольку ВМ написана на языке высокого уровня, то можно использовать любой удобный вариант:

- Массив инструкций
- какая-нибудь сложная конструкция из вложенных массивов и структур

авторКак они будут идентифицироваться

Можно сделать тупой вариант. Один большой switch и куча case`ов.
Но это слишком примитивно. Я хочу сделать адресный интерпретатор и прямой шитый код
По скорости работы практически ничем не отличается от нативного кода
...
Рейтинг: 0 / 0
Виртуальный ассемблер для виртуальной стековой машины.
    #39151010
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EoltСкомпилировал и выполнил первый рабочий код
Выражение: 1+2+3-7
оптимизатор должен сделать push 0
...
Рейтинг: 0 / 0
Виртуальный ассемблер для виртуальной стековой машины.
    #39151011
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилоптимизатор должен сделать push 0

у тебя с математикой туго видимо
...
Рейтинг: 0 / 0
Виртуальный ассемблер для виртуальной стековой машины.
    #39151012
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилоптимизатор должен сделать push 0
push -1 , конечно
...
Рейтинг: 0 / 0
Виртуальный ассемблер для виртуальной стековой машины.
    #39151014
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прикольное видео прямо по-теме байткода и виртуальным машинам: [youtube=
YouTube Video
...
Рейтинг: 0 / 0
Виртуальный ассемблер для виртуальной стековой машины.
    #39151017
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EoltПо скорости работы практически ничем не отличается от нативного кода
блажен кто верует
...
Рейтинг: 0 / 0
Виртуальный ассемблер для виртуальной стековой машины.
    #39151037
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилблажен кто верует

я не верю, я знаю
...
Рейтинг: 0 / 0
Виртуальный ассемблер для виртуальной стековой машины.
    #39151891
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EoltИзопропилблажен кто верует

я не верю, я знаю
У меня возникли сомнения в твоей компетенции.

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

У тебя есть опыт разработки компилляторов?

P.S. Положа руку на сердце я сам не специалист именно
в области компилляции. Но слушая тебя - берёт оторопь!
Кто ты?
...
Рейтинг: 0 / 0
Виртуальный ассемблер для виртуальной стековой машины.
    #39159601
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все играюсь с виртуальной машиной. Идея безусловно работает. Можно даже программки писать в байт-коде. Только это трудно.
Нужно визуализировать в голове работу стека. Этакий тренажер для мозгов :)

Появилась мысль написать транслятор какого-то скриптового языка в байт-код ВМ. Это намного интереснее, чем просто реализовывать команды ВМ по-списку, точно не зная понадобятся они или нет.
Пока думаю над языками: JavaScript, VBScript, OberonScript. Для первых двух есть готовые реализации синтаксических анализаторов.
Oberon - довольно симпатичный язык с красивым паскалевским синтаксисом. Но практически мёртвый, как и все детища Вирта.
...
Рейтинг: 0 / 0
Виртуальный ассемблер для виртуальной стековой машины.
    #39159670
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EoltНужно визуализировать в голове работу стека. Этакий тренажер для мозгов :)
этим должен заниматься компилятор

«человек должен думать, а машины должны работать».
...
Рейтинг: 0 / 0
Виртуальный ассемблер для виртуальной стековой машины.
    #39159686
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилэтим должен заниматься компилятор

«человек должен думать, а машины должны работать».
Согласись, МК-61 развивал именно эту часть мозга и учил думать гибче.
...
Рейтинг: 0 / 0
23 сообщений из 98, страница 4 из 4
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Виртуальный ассемблер для виртуальной стековой машины.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]