есть опкод, а что его параметры?
Например: 0x60606040
Это если что:
0x40
PUSH1
0x60
PUSH1
Мне сейчас наверно ответят, что где то в реализации есть пометка, что если есть параметры, то все что после парсится как параметр (uint256 и тд) и далее снова ищется опкод. Но все же как это на примере реализовывают?
Вот задача тупо спарсить байткод и выполнить операцию. В данном случае засунуть значение в «выдуманный» стек.
Кстати я верно понимаю, что evm это просто на любом языке реализация стек машины?
Я подозреваю, что размерность параметров (u32, u64 и тд) как раз и нужна, чтобы парсер мог понять где заканчивается каждый параметр после того как он нашёл опкод. Например если push1 принимает один параметр конкретного размера, то парсер возьмёт этот размер после опкода а дальше будет искать новые опкоды. Это так?
вроде да. он же всегда добивает нулями оставшееся значение. каждый тип имеет строгий размер
Там в клиенте есть импорт evm_types. Надо будет вникнуть как их реализовали.
Не понимаю как их матчат. Тупо по длине вектора)
Обсуждают сегодня