Commit Graph

53 Commits

Author SHA1 Message Date
Alex Beregszaszi
c08c4b8b6f Move subroutine helpers from CompilerContext to Assembly 2017-06-14 21:21:26 +01:00
Alex Beregszaszi
6a260a9ff1 Remove single use Assembly::popTo 2017-06-14 21:21:26 +01:00
Alex Beregszaszi
18fc667658 Remove obsolete Assembly::out 2017-06-14 21:21:26 +01:00
Alex Beregszaszi
600e3ad240 Support shl/shr in LLL 2017-06-14 14:08:28 +01:00
benjaminion
3299c479b6 LLL: fix handling of "sha3" expression
When PR #2317 changed the EVM opcode from SHA3 to KECCAK256 it broke the `(sha3 loc len)` expression in LLL. This PR fixes things while allowing existing code using the sha3 expression (such as the ENS registrar) to continue to compile.  I.e. both `(keccak256 loc len)` and `(sha3 loc len)` may be used, and the existing related sha3 macros continue to work.

Three end-to-end test cases have been added for kekkac256 and sha3.
2017-06-13 22:20:14 +01:00
benjaminion
c603369a51 Change opcode generated by (panic) to INVALID
EIP-141 ethereum/EIPs#141 has preserved 0xfe as an invalid opcode for aborting EVM execution. The EVM assembler supports this via the INVALID opcode.

The LLL "panic" expression used to generate a jump to an invalid location in order to abort EVM execution.  This change brings "panic" into line with EIP-141 by generating the INVALID opcode instead.
2017-06-13 17:01:38 +01:00
Yoichi Hirai
37a949e634
liblll: allow macros with no arguments 2017-06-12 15:16:08 +02:00
Alex Beregszaszi
902f69640b Replace cpp-ethereum with solidity in the license headers 2017-02-02 10:06:28 +00:00
Alex Beregszaszi
b1add657b7 LLL: throw exceptions on invalid symbols 2016-11-30 16:17:50 +00:00
Alex Beregszaszi
99b803cbcb LLL: () requires at least one parameter 2016-11-30 16:17:50 +00:00
Alex Beregszaszi
a8696c6d8e LLL: do not accept '0x' as 0 2016-11-30 16:17:50 +00:00
Alex Beregszaszi
53d4433484 LLL: simplify error handling in parseLLL 2016-11-30 15:06:13 +00:00
Alex Beregszaszi
d82eac3fed LLL: parseLLL to be less greedy catching exceptions 2016-11-29 22:04:51 +00:00
Alex Beregszaszi
3ec0bb5bfa LLL: parseLLL to return empty string on failure 2016-11-29 21:42:22 +00:00
Alex Beregszaszi
4a67a2862c Merge pull request #1329 from ethereum/lll-lit-changes
LLL: improvements (and fixes) to the lit keyword
2016-11-26 15:22:14 +00:00
Alex Beregszaszi
eee10f1af2 LLL: simplify the LIT parsing code 2016-11-26 14:41:15 +00:00
chriseth
e51f852504 Converted sub assembly to smart pointer. 2016-11-16 14:37:18 +01:00
chriseth
e543bd34c0 Stored combined creation and runtime tags.
Includes a change to Assembly to allow tags from sub-assemblies to be
used.

Sorry, this get a bit bigger than I thought.
2016-11-16 14:37:18 +01:00
chriseth
7a30e8cf6e Merge pull request #1252 from ethereum/jsoncpp-from-source
Build jsoncpp from source using jsoncpp.cmake script
2016-11-08 13:47:52 +01:00
Alex Beregszaszi
200cbc08dd LLL: add bytecodesize keyword to push resulting bytecode size 2016-11-01 22:19:06 +00:00
Alex Beregszaszi
ac3c8a553a LLL: properly support dashes (-) as part of variable names 2016-11-01 10:45:13 +00:00
Alex Beregszaszi
dc5e05681d LLL: simplify integer parsing 2016-11-01 10:45:13 +00:00
Alex Beregszaszi
b92bb41be7 LLL: catch and display spirit::qi errors 2016-11-01 01:08:57 +00:00
Alex Beregszaszi
5be1996ea5 LLL: update exception message 2016-10-31 23:19:32 +00:00
Alex Beregszaszi
b24eed1c3e LLL: remove unneeded includes 2016-10-31 23:19:32 +00:00
Alex Beregszaszi
9b65a79cb3 LLL: report back unsupported keywords 2016-10-31 23:19:32 +00:00
Alex Beregszaszi
b269202b73 LLL: support passing error reasons 2016-10-31 23:19:32 +00:00
Alex Beregszaszi
75b1ae8910 LLL: only support variable length bigendian numbers in LIT 2016-10-31 23:17:55 +00:00
Alex Beregszaszi
6d97a56af1 LLL: support multiple strings in LIT 2016-10-31 23:17:48 +00:00
chriseth
e85390cc60 Merge pull request #1302 from ethereum/lll-panic
LLL: introduce panic keyword
2016-10-28 11:44:46 +02:00
Alex Beregszaszi
274c76fc5e LLL: introduce panic keyword 2016-10-27 13:45:33 +01:00
Daniel Ellison
7ac53f5305 Added support for until, the inverse of while. 2016-10-26 09:24:01 -04:00
Alex Beregszaszi
6cb9c36977 LLL: reorder arithmetic/binary instruction list for readability 2016-10-26 01:16:29 +01:00
Alex Beregszaszi
ee3cfd8f52 LLL: use NOT for ~ 2016-10-26 01:12:15 +01:00
Alex Beregszaszi
5a981b59c3 LLL: replace (1 0 sub) with literal value 2016-10-26 01:10:55 +01:00
Paweł Bylica
4bde0a2d36 Build jsoncpp from source using jsoncpp.cmake script 2016-10-20 22:18:13 +01:00
chriseth
0fd6f2b5a6 Merge pull request #1228 from ethereum/lll-units-parser
LLL: move broken parsing of Ethereum subunits to macros
2016-10-19 10:26:21 +02:00
Alex Beregszaszi
27fca416ba LLL: add Ethereum subunit macros 2016-10-15 16:26:04 +01:00
Alex Beregszaszi
3a91da27ed LLL: remove Ethereum subunits from the parser 2016-10-15 14:48:43 +01:00
Alex Beregszaszi
8aa50a004f LLL: throw proper ParserException 2016-10-15 13:26:16 +01:00
Alex Beregszaszi
7c7a6de87b LLL: fix the commented out debugging code 2016-10-15 12:58:57 +01:00
Alex Beregszaszi
e5efc86f2d LLL: better error reporting 2016-10-15 02:27:54 +01:00
Daniel Ellison
00278fdea8 Removed obsolete built in macros. Added a new macro to support the use of 'keccak256' in addition to 'sha3'. 2016-10-13 10:03:54 -04:00
chriseth
4c54834908 Rename libevmasm. 2016-08-10 13:52:24 +02:00
chriseth
7ea5770598 Do not install headers. 2016-08-05 16:35:24 +02:00
Paweł Bylica
ca6a21bcd3 Suppress a warning in LLL parser on MSVC 2015 2016-05-13 15:38:23 +02:00
chriseth
6f54b13d7a Remove log.h from solidity. 2016-04-12 01:03:46 +02:00
Dimitry
d43d4347bf return instructionInfo style 2016-04-04 15:27:09 +04:00
Dimitry
858c41260d rename namespace for instruction.h/cpp in libevmasm 2016-04-02 15:56:43 +03:00
Dimitry
ccbd3ff63f move libevmcore to solidity 2016-04-01 23:11:01 +03:00