136 Commits

Author SHA1 Message Date
Nicholas Ward
615ece2289 progress 2022-10-03 13:34:16 -07:00
Nicholas Ward
92b14fe7f2 functions --> macros 2022-10-03 13:34:16 -07:00
Nicholas Ward
a357a34be9 redest, and progress 2022-10-03 13:34:16 -07:00
Nicholas Ward
05837039eb constants as macros instead of functions 2022-10-03 13:34:16 -07:00
Nicholas Ward
caa1aeee84 progress 2022-10-03 13:34:16 -07:00
Nicholas Ward
3140c77cd1 progress 2022-10-03 13:34:16 -07:00
Nicholas Ward
89c79208fe new padding 2022-10-03 13:34:16 -07:00
Nicholas Ward
476e769153 ops 2022-10-03 13:34:16 -07:00
Nicholas Ward
723b047dc7 constants 2022-10-03 13:34:16 -07:00
Nicholas Ward
aba45e2d2c finished pad 2022-10-03 13:34:16 -07:00
Nicholas Ward
0d22b3f8da fix 2022-10-03 13:34:16 -07:00
Nicholas Ward
7045772ca4 fixes 2022-10-03 13:34:16 -07:00
Nicholas Ward
dd2cbf604b updates 2022-10-03 13:34:16 -07:00
Nicholas Ward
2c7b60e286 using memory 2022-10-03 13:34:16 -07:00
Nicholas Ward
4378ff0fc2 progress 2022-10-03 13:34:16 -07:00
Nicholas Ward
042da0c8e9 starting on sha2 2022-10-03 13:34:16 -07:00
Daniel Lubarov
25a448e24b Minor refactor of RLP code 2022-10-03 09:58:43 -07:00
Daniel Lubarov
9f9143d6f6 Finish some misc storage logic 2022-10-02 11:14:19 -07:00
Daniel Lubarov
9d22e376d0 Add TODO 2022-10-02 09:27:29 -07:00
Daniel Lubarov
9e483528d3 MPT hashing logic, part 3 2022-10-02 09:11:39 -07:00
Daniel Lubarov
f2f05952ab MPT hashing logic, part 2 2022-10-01 20:02:42 -07:00
Daniel Lubarov
12247047ae MPT hashing logic, part 1 2022-09-30 17:02:25 -07:00
Daniel Lubarov
c721155e23 Main function, txn processing loop 2022-09-29 23:15:33 -07:00
Daniel Lubarov
5555085c4c MPT read for extension nodes 2022-09-27 21:41:22 -07:00
Daniel Lubarov
0e48d58147 Finish MPT read logic 2022-09-26 19:13:17 -07:00
Daniel Lubarov
c7b03cfe9a More MPT logic 2022-09-24 20:49:19 -07:00
Daniel Lubarov
37d92b55ac Basic MPT logic
For now this contains most of the basic framework/structure. Logic for things like insertions will come later.
2022-09-22 11:25:37 -07:00
Daniel Lubarov
fdb6cafe18 Fill in call_common routine 2022-09-07 16:42:21 -07:00
Daniel Lubarov
9b259cb917 Feedback 2022-09-05 10:12:23 -07:00
Daniel Lubarov
aaf7ace396 Remove JUMPDESTs 2022-09-04 22:31:56 -07:00
Jacqueline Nabaglo
4c52d37546
Save columns by verifying invalid opcodes in software (#701)
* Save columns by verifying invalid opcodes in software

* Autogenerate invalid opcode bitfield (Daniel comment)

* Remove unnecessary panic label
2022-08-30 13:06:03 -07:00
Jacqueline Nabaglo
b98dd47820
Permission levels, jumps, traps (#653)
* Permission levels, jumps, traps

* Tests passing

* PR comments + documentation

* Docs + minor bugfixes

* Tests

* Use already-defined `stop` and `exception` (but renamed to `sys_stop`, `fault_exception`)

* Daniel comments
2022-08-16 09:46:10 -07:00
Daniel Lubarov
232303b9ec
Merge pull request #666 from mir-protocol/rlp_encode
RLP encoding functions
2022-08-15 12:19:04 -07:00
Daniel Lubarov
97b271bf69
Merge pull request #663 from mir-protocol/use_mstore_txn_field
Make use of `mstore_txn_field` in type 0 parsing
2022-08-15 11:41:18 -07:00
Daniel Lubarov
539152d767 RLP encoding functions 2022-08-14 11:41:53 -07:00
Daniel Lubarov
6ea801d960 TODOs 2022-08-13 10:23:29 -07:00
Daniel Lubarov
74b1fd25e6 TODOs 2022-08-12 17:37:00 -07:00
Daniel Lubarov
cc61c7211c Core transaction processing logic
With lots of TODOs to fill in afterward; this is just a start.
2022-08-12 17:20:18 -07:00
Daniel Lubarov
707e564934 Make use of mstore_txn_field in type 0 parsing
Some of the `%stack` operations are now trivial, but I kind of like keeping `%stack` since it serves as documentation as well, making comments about the stack unnecessary.
2022-08-09 18:44:41 -04:00
Daniel Lubarov
68de3ee0c6
Merge pull request #660 from mir-protocol/packing
Packing memory operations
2022-08-08 14:23:49 -04: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
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
f58990160e min, max macros
Will be used later for things like updating `MemorySize`.
2022-08-03 13:44:44 -07:00
Daniel Lubarov
90be4749ef Merge branch 'main' into optimizer 2022-08-03 09:58:54 -07:00
Daniel Lubarov
6416826643 Feedback 2022-08-02 15:44:50 -07:00
Daniel Lubarov
d6b5193c9b RLP decoding tests 2022-07-31 20:29:57 -07:00