Сокращается ли Solidity до LLL в процессе его компиляции в байт-код EVM?

Глядя на репозиторий Github компилятора Solidity, я вижу, что в проект также интегрирован LLL-компилятор.

Это заставило меня задуматься, не уменьшается ли Solidity до LLL в процессе компиляции в байт-код EVM?

Я читал, что LLL служит оболочкой для EVM ASM, так что было бы разумно скомпилировать Solidity в LLL?

Или компилятор LLL просто включен как часть проекта Solidity, потому что он слишком мал, чтобы служить проектом сам по себе?

0

Решение

На самом деле у меня такой же вопрос, но я думаю, что ответ — да! В солидности вы можете использовать монтажный сегмент

assembly {
// LLL OR OPCODES HERE
}

Где вы можете написать код, как вы делаете в LLL, тот же синтаксис и довольно дешево ГАЗ стоимость, по крайней мере, 30% в моем опыте.

pragma solidity ^0.4.24;
/*
Autor: Javier Guajardo J.
Website: https://ethereumchile.cl
Twitter: @EthereumChile
*/
contract Assembly {
function returnSum1(uint a, uint b) public pure returns (uint sum) {
// We ADD a and b in a new variable called doSum
assembly {
let doSum := add(a, b)
sum := doSum
}
}
function returnSum2(uint a, uint b) public pure returns (uint sum) {
// OR you can ADD a and b directly
assembly {
sum := add(a, b)
}
}
function returnSum3(uint a, uint b) public pure returns (uint) {
// OR you can ADD a and b into 0x40 memory address
assembly {
let sum := mload(0x40) // loading 0x40 address memory
mstore(sum, add(a, b)) // We store the add(a, b) in 0x40 address memory
return(sum, 32) // We return result.
}
}
}

Результат в Remix IDE

Screencapture.png Сборка в солидности Хавьера Гуахардо

0

Другие решения

Вопреки предыдущему ответу, правильный ответ — нет. Компилятор солидности компилирует код солидности непосредственно в EVM. Существует промежуточный язык для солидности, который называется Юлия, и это то, что на самом деле принято assembly{} блоки, но это еще не разработано до такой степени, что код Джулии генерируется из кода солидности. Компилятор LLL включен в хранилище солидности в основном по историческим причинам.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector