Как использовать компиляцию evm?

Я тестировал с evm, и я не получаю никаких результатов.

Код -

pragma solidity ^0.4.18;

contract d8 {

    function myBalance() pure public returns (uint) {
        return 880;
    }

}

Мой asm отсюда -

solc --asm d8.sol > d8.asm

Потом я попробовал -

evm compile d8.asm

Не так много происходит (вывод - пустая строка).

Я пробовал разные варианты и добавлял «выполнить» в конце, но ничего не выдавало.

У кого-нибудь есть предложения?

Ответы (2)

У Solidity есть собственный рабочий процесс для сборки. Обратитесь к https://solidity.readthedocs.io/en/develop/assembly.html# и проверьте фазы:

  1. Сборка
  2. Обессахаривание
  3. Поток кода операции
  4. Байтовый поток

Вывод фазы 2 можно сгенерировать следующим образом: solc --asm

Однако компиляция evm предполагает, что у вас будет фаза 3.

например, проверьте код: https://github.com/IC3Hydra/Hydra/blob/master/submarine_sends/to_contract/clone_withdraw.easm

Это помогло бы, если бы вы использовали evmего правильно. Опция compilerпредназначена не для сборки EVM, а для easm, устаревшего AST Solidity. Соответствующая информация довольно ограничена, и единственное, что я нашел, это то, что evmlab немного упоминает. Обратитесь к моему другому ответу , если вам нужны дополнительные руководства для evmкоманды, поставляемой с geth.

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