Commit Graph

50 Commits

Author SHA1 Message Date
Alex Beregszaszi
e82917d4e6 Add LLL error when assembly instruction causes stack underflow 2018-11-13 13:47:29 +01:00
Alex Beregszaszi
c320a650f9 LLL: terminate sequences with a STOP 2018-11-13 13:47:29 +01:00
Christian Parpart
ab0de38f16
Eliminate byte-typedef and use uint8_t in all their places instead.
This change is made to (easily) be forward compatible with future C++
standards, in order to allow compiling the code with newer standards at
some point in the future.

* Removed the `using byte = uint8_t;` line from Common.h
* Mechanically change all uses of `byte` to `uint8_t`.

Tested with GCC 7.3 in C++11/14/17 modes :-)
2018-11-07 12:17:57 +01:00
Augusto F. Hack
6c3b48ddfc Added guards for unknown pragmas
Removed push/pop if there was no change to the warnings *in the same
file* for a given compiler. This assumes the imported boost headers use
a warning stack themselves.

The pragmas don't seem to be required anymore, but were not removed to
mantain compatibility with older versions of the boost library.

Compiled with
- clang version 6.0.1 (tags/RELEASE_601/final)
- gcc (GCC) 8.1.1 20180531
 against:
- libboost 1.67.0-5
2018-08-05 19:21:33 -03:00
Alex Beregszaszi
7c509137cf Replace dev::eth namespace with dev::lll in LLL 2018-07-28 12:00:36 +01:00
Alex Beregszaszi
15517b571d lll: disallow useless PUSHn in assembly 2017-10-13 02:04:36 +01:00
Alex Beregszaszi
ab206b8113 LLL: do not crash if import callback is null 2017-10-03 10:22:30 +01:00
Alex Beregszaszi
26f3ea8cf7 LLL: change (include) to use a callback 2017-10-02 21:19:36 +01:00
Alex Beregszaszi
cbd4465a7f lll: do not expose push/dup/swap/jumpdest as functions 2017-10-02 16:21:21 +01:00
Alex Beregszaszi
6cbb726fb8 Merge pull request #2622 from benjaminion/lll-switch
LLL: Implement a "switch" expression
2017-10-02 13:38:21 +01:00
benjaminion
326c7887a4 LLL: Implement a switch expression. 2017-10-02 12:01:15 +01:00
Alex Beregszaszi
cddfec27ee lll: better error reporting in some cases 2017-10-02 11:48:26 +01:00
Alex Beregszaszi
d70974ea7c Merge pull request #2573 from benjaminion/lll-error-report-symbol
LLL: Improve error reporting in certain cases.
2017-07-20 11:02:31 +01:00
Alex Beregszaszi
fa2781d6da LLL: remove useless code 2017-07-18 21:12:43 +01:00
benjaminion
4c0953385e LLL: Improve error reporting in certain cases. 2017-07-15 22:17:20 +01:00
benjaminion
3bc935d932 LLL: rewrite alloc to avoid issues with edge cases. 2017-07-11 21:22:38 +01:00
Alex Beregszaszi
dbbdcc66e6 LLL: fix redefinitions on some compilers 2017-06-24 12:59:30 +01:00
Alex Beregszaszi
af57c083f2 LLL: fix the set keyword (create symbol if not present) 2017-06-23 02:52:44 +01:00
Alex Beregszaszi
1ffe286a81 LLL: report correct name if a symbol was not found 2017-06-22 23:00:22 +01:00
Alex Beregszaszi
581aace501 LLL: do not allow empty variable names 2017-06-22 23:00:22 +01:00
chriseth
0868a50eb1 Merge pull request #2440 from ethereum/lll-include
LLL: better error reporting in (include)
2017-06-22 17:18:34 +02:00
Alex Beregszaszi
a14a1254ca LLL: report errors if (include) failed 2017-06-22 10:56:58 +01:00
Alex Beregszaszi
bc95da354d Replace obsolete assembly code in LLL 2017-06-21 21:23:39 +01:00
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
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
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
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
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
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
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
Alex Beregszaszi
7c7a6de87b LLL: fix the commented out debugging code 2016-10-15 12:58:57 +01: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
Dimitry
e95dd9203a move liblll 2016-03-21 14:58:34 +03:00