389 Commits

Author SHA1 Message Date
Daniel Lubarov
68de3ee0c6
Merge pull request #660 from mir-protocol/packing
Packing memory operations
2022-08-08 14:23:49 -04:00
Nicholas Ward
ed3ac7b29d
Merge pull request #658 from mir-protocol/memory_stark_fix
Memory Stark fix
2022-08-05 15:33:00 -07:00
Daniel Lubarov
5f14bef57e
Merge pull request #655 from mir-protocol/more_metadata
More metadata fields
2022-08-05 14:08:51 -05:00
Daniel Lubarov
ccc4202de3 Packing memory operations 2022-08-05 13:44:08 -04:00
Daniel Lubarov
616eb618f2 Support macro-local labels
Again borrowing syntax from NASM. Example from the test:

    %macro spin
    %%start:
        PUSH %%start
        JUMP
    %endmacro

One thing this lets us do is create "wrapper" macros which call a function, then return to the code immediately following the macro call, such as

    %macro decode_rlp_scalar
        %stack (pos) -> (pos, %%after)
        %jump(decode_rlp_scalar)
    %%after:
    %endmacro

I used this to clean up `type_0.asm`.

However, since such macros need to insert `%%after` beneath any arguments in the stack, using them will be suboptimal in some cases. I wouldn't worry about it generally, but we might want to avoid them in performance-critical code, or functions with many arguments like `memcpy`.
2022-08-04 12:32:20 -07:00
Nicholas Ward
bbcb419521 fmt 2022-08-04 14:56:16 -04:00
Nicholas Ward
bf4cf1c64f fix 2022-08-04 14:40:34 -04:00
Daniel Lubarov
1e6cf4c4ab newline 2022-08-04 09:34:46 -07:00
Daniel Lubarov
7423124e36 Split up memory asm and add more helper functions 2022-08-03 22:18:29 -07:00
Daniel Lubarov
fae653da2a Missing retdest 2022-08-03 21:56:31 -07:00
Daniel Lubarov
233584e945
Merge pull request #656 from mir-protocol/min_max
min, max macros
2022-08-03 21:41:23 -07:00
Daniel Lubarov
dfd715fafb Fix case where a valid constant propagation a broke test 2022-08-03 13:52:52 -07:00
Daniel Lubarov
f58990160e min, max macros
Will be used later for things like updating `MemorySize`.
2022-08-03 13:44:44 -07:00
Daniel Lubarov
b4d83f8db2 More metadata fields 2022-08-03 13:43:13 -07:00
Daniel Lubarov
90be4749ef Merge branch 'main' into optimizer 2022-08-03 09:58:54 -07:00
Daniel Lubarov
9b5b77d3e9 Check if suggested code is actually better 2022-08-03 09:57:40 -07:00
Daniel Lubarov
8aad0b0746 Feedback 2022-08-02 15:57:06 -07:00
Daniel Lubarov
6416826643 Feedback 2022-08-02 15:44:50 -07:00
Daniel Lubarov
002b568a12 fix 2022-08-02 10:17:34 -07:00
Daniel Lubarov
cb2df9fa03 More commutative fns 2022-08-02 09:22:06 -07:00
Daniel Lubarov
c167da8cbe Revert "UserspaceProgramCounter"
This reverts commit 05beaab661a8aaa2f84b6f121b5ac2f29f2ed836.
2022-08-02 09:11:27 -07:00
Daniel Lubarov
3b54ec3986 Feedback 2022-08-02 09:11:27 -07:00
Daniel Lubarov
8bb45203f9 More succinct deadbeef 2022-08-02 09:11:27 -07:00
Daniel Lubarov
f951345556
Update evm/src/cpu/kernel/global_metadata.rs
Co-authored-by: Jacqueline Nabaglo <jakub@mirprotocol.org>
2022-08-02 09:09:48 -07:00
Daniel Lubarov
be0a5269ab UserspaceProgramCounter 2022-08-01 21:21:35 -07:00
Daniel Lubarov
3f08cca116 More constants for kernel ASM
- `GlobalMetadata` - offsets for global kernel variables in memory
- `ContextMetadata` - offsets for context-specific kernel variables in memory
- `GAS_CONSTANTS`, based on the yellowpaper

Also move constants to a separate module since `aggregator` was getting long.
2022-08-01 18:18:22 -07:00
Daniel Lubarov
94c9b1b09c Misc 2022-08-01 11:20:56 -07:00
Daniel Lubarov
b737aeaf03 Tweak py-evm code 2022-08-01 11:13:33 -07:00
Daniel Lubarov
3618793706 Test for parsing type 0 transactions
I made a couple related changes to `Interpreter`:
- Only enforce the `JUMPDEST` rule if we're in kernel mode.
- Convenience methods for dealing with the RLP and txn field segments of memory.
2022-08-01 11:03:05 -07:00
Daniel Lubarov
4fc7f3cd6e
Merge pull request #649 from mir-protocol/rlp_tests
RLP decoding tests
2022-08-01 09:54:42 -07:00
Daniel Lubarov
98c4a372fb More binops 2022-08-01 09:22:01 -07:00
Daniel Lubarov
d1c9e150b3 remove_swaps_commutative 2022-08-01 09:02:39 -07:00
Daniel Lubarov
63c8568b17 remove_ignored_values 2022-08-01 08:47:07 -07:00
Daniel Lubarov
94183f723c fixes 2022-07-31 20:43:58 -07:00
Daniel Lubarov
61a9839f2f Feedback 2022-07-31 20:37:05 -07:00
Daniel Lubarov
d6b5193c9b RLP decoding tests 2022-07-31 20:29:57 -07:00
Daniel Lubarov
d639d0b311 clippy 2022-07-31 15:55:02 -07:00
Daniel Lubarov
2b9600e50c Misc 2022-07-31 13:22:17 -07:00
Daniel Lubarov
a34a4c8184 fix 2022-07-31 13:03:07 -07:00
Daniel Lubarov
497b26dee6 Some simple optimization rules
Depends on #647.
2022-07-31 13:00:27 -07:00
Daniel Lubarov
7e91720088 Store literals as U256 (or u8 for BYTES)
Instead of the original strings. Will make optimizations simpler.
2022-07-31 12:12:35 -07:00
Daniel Lubarov
bd6847e8fc Allow %stack to work with labels
There's no syntax to distinguish named stack items from labels, so this simply searches the former first. I.e. labels can be shadowed by stack items.
2022-07-31 12:12:17 -07:00
Daniel Lubarov
7a6d996fe7 Move couple asm files 2022-07-31 09:28:16 -07:00
Daniel Lubarov
718b3c0961 Move ecrecover 2022-07-31 09:24:04 -07:00
Daniel Lubarov
56d814e467 fix 2022-07-31 09:22:13 -07:00
Daniel Lubarov
f49170a8b8 fix 2022-07-30 22:31:07 -07:00
Daniel Lubarov
86a797b1db Add a asm/curve/ directory 2022-07-30 22:24:11 -07:00
wborgeaud
d2141581de
Merge pull request #643 from mir-protocol/interpreter_remove_stack_code
Remove stack and code in interpreter
2022-07-30 14:44:17 +02:00
Jacqueline Nabaglo
24bb632358
Implement PANIC instruction (#644)
* Implement PANIC instruction

* Minor: comments
2022-07-29 12:04:42 -07:00
Daniel Lubarov
760a111a63
Merge pull request #642 from mir-protocol/type_0_fix
Small fix for type 0 txns
2022-07-29 09:28:20 -07:00