bradyrussell / UISCoin

Java cryptocurrency made to learn more about Bitcoin.
https://bradyrussell.github.io/UISCoin/javadoc
0 stars 1 forks source link

CleanupStackSpaceForVariables fails if anything is left on the stack #50

Closed bradyrussell closed 3 years ago

bradyrussell commented 3 years ago

this is working at least for this number of vars

//Decompiled from gYGQkpcD_wEEP4AAAAEBAQgBBD8AAAABAQIIAQEBBwEBAgdkAQRBIAAAZC4BBAAAAAUQoAEEAAAAAQEEAAAAAgEEAAAAAwEEAAAABAEBAQEBAAcBAQIknwEBAQEBAAcBAQIknwP_mAEBAhGgkgEBAhGgng==# NULL NULL DEPTH DUP SHIFTUP FLAG 0xFF PUSH [63, -128, 0, 0] PUSH [1] REPLACE PUSH [63, 0, 0, 0] PUSH [2] REPLACE PUSH [1] PICK PUSH [2] PICK MULTIPLYFLOAT PUSH [65, 32, 0, 0] MULTIPLYFLOAT CONVERTFLOATTO32 PUSH [0, 0, 0, 5] NUMEQUAL VERIFY PUSH [0, 0, 0, 1] PUSH [0, 0, 0, 2] PUSH [0, 0, 0, 3] PUSH [0, 0, 0, 4] PUSH [1] PUSH [0] PICK PUSH [2] ADDBYTES SHIFTNEXCEPT PUSH [1] PUSH [0] PICK PUSH [2] ADDBYTES SHIFTNEXCEPT FLAG 0xFF flip // puts var stack at top dup // copy var count push [3] // shift amt swap addbytes([4]) // add stack cookies plus the dup and shift amt depth swap subtractbytes // gives us the number of stack elems besides vars shiftnexcept //SHIFTDOWN PUSH [2] BYTESEQUAL VERIFY DUP PUSH [2] BYTESEQUAL VERIFY DROPN

bradyrussell commented 3 years ago

doesnt work if i add another var

bradyrussell commented 3 years ago

had to negate the shift var this works //Decompiled from gYGQkpcD_wEEP4AAAAEBAQgBBD8AAAABAQIIAQEBBwEBAgdkAQRBIAAAZC4BBAAAAAUQoAEEAAAAAQEEAAAAAgEEAAAAAwEEAAAABAEBAQEBAAcBAQIknwEBAQEBAAcBAQIknwP_mAEBAhGgkgEBAhGgng==# NULL NULL NULL DEPTH DUP SHIFTUP FLAG 0xFF PUSH [63, -128, 0, 0] PUSH [1] REPLACE PUSH [63, 0, 0, 0] PUSH [2] REPLACE PUSH [1] PICK PUSH [2] PICK MULTIPLYFLOAT PUSH [65, 32, 0, 0] MULTIPLYFLOAT CONVERTFLOATTO32 PUSH [0, 0, 0, 5] NUMEQUAL VERIFY PUSH [0, 0, 0, 1] PUSH [0, 0, 0, 2] PUSH [0, 0, 0, 3] PUSH [0, 0, 0, 4] PUSH [1] PUSH [0] PICK PUSH [2] ADDBYTES SHIFTNEXCEPT PUSH [1] PUSH [0] PICK PUSH [2] ADDBYTES SHIFTNEXCEPT FLAG 0xFF flip // puts var stack at top dup // copy var count push [-1] // shift amt swap addbytes([4]) // add stack cookies plus the dup and shift amt depth swap subtractbytes // gives us the number of stack elems besides vars shiftnexcept //SHIFTDOWN PUSH [3] BYTESEQUAL VERIFY DUP PUSH [3] BYTESEQUAL VERIFY DROPN