170 похожих чатов

Ну то есть до уровня асма придется опуститься?)

13 ответов

34 просмотра

Если вы придумали свою вм со своими регистрами и прочим, то вам предстоит придумать соглашения о вызове функций

\--- Автор вопроса
Denis P
Если вы придумали свою вм со своими регистрами и п...

Нет регистров пока что)) stack based virtual machine Хочу иметь возможность из кода виртуальной машины вызвать нативную функцию. Необязательно у меня виртуальная машина вызывает такие же виртуализированные функции)

\--
Нет регистров пока что)) stack based virtual machi...

А в чём у вас проблема. Есть список функций. Вы считывание опкод. Интерпретатор смотрит опкод, понимает, какую функцию вызывать

\--
Нет регистров пока что)) stack based virtual machi...

Ну ты просто тогда кодируешь конвенцию вызова нужную и пишешь переходник

\--- Автор вопроса
netricks
А в чём у вас проблема. Есть список функций. Вы сч...

Не так. Вот я запушил на стэк виртуальной машины адрес функции. Что это за функция виртуальной машине неизвестно. Это просто адрес. Нет никакого списка функций и прочего. Попадается опкод вызова, берется со стэка верхнее значение и его вызываем.

\--
Не так. Вот я запушил на стэк виртуальной машины а...

А можно глупый вопрос. Откуда адрес взялся?

\--
Не так. Вот я запушил на стэк виртуальной машины а...

Хорошо. Описанное очень напоминает классическую стековую машину. Смотрите реализацию языка Lua. В книжке Роберта Иерусалимски довольно подробно описано, как она работает

\--- Автор вопроса
Alex Noname
А можно глупый вопрос. Откуда адрес взялся?

Ну пока что он берется просто из массива. То есть в мэйне формируется массив кода для виртуальной машины. Пока что адреса пишутся ручками на известные функции (тесты), но нужно универсально. Формально может быть потом сделаю что-то типа компилятора. Что туда пихнут никому неизвестно

\--
Ну пока что он берется просто из массива. То есть...

Не очень понятен юзкейс такого. Задать список таких функций это же задача спецификации вм, и потом интерпретатора байткода? Или тот кто пишет байткод будет это задавать? Я просто рассуждал что есть список интринзик функций вм и всё :) но видимо тут речь про ffi из вм в цпп.

\--- Автор вопроса
Alex Noname
Не очень понятен юзкейс такого. Задать список таки...

да, это из опкодов в с++. Функции задает, тот кто пишет байт код.

Alex Noname
Не очень понятен юзкейс такого. Задать список таки...

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

netricks
Все равно адреса функций надо где-то собрать. В эт...

Ну да обычно цпп модуль с расширением декларирует какой то глобальный обьект с метаинформацией о функциях

Alex Noname
Не очень понятен юзкейс такого. Задать список таки...

обычно ты в каком-то виде предоставляешь описание, что вот такая то функция, такие то параметры, и такая то конвенция вызова, и этого достаточно чтобы сгенерить асм код вызова

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта