Also, I have finalized my grammar rules for pophicmorly, I am working on a compiler for et right now (/am using antlr to generate lexer\parser\tree-walker) There are some thing I changed in this code to simplify it (in the actual version, you never explicitly specify registers so the compiler can use more advanced reg-swapping methods)
Code:
#attribute[#arg_obstruct = none, #local_obstruct=none, #convention=default]
void myFunction()
{
#attribute(#cycles=1, #method=random)
#init()
{
//YEAH I KNOW I CAN JUST EXTEND THE SCOPE, THIS IS TO DEMONSTRATE A FEATURE THOUGH.
#rnd = rand(20, 50);
#a()
{
#asm
{
sub esp, #rnd
}
}
#b()
{
#asm
{
sub esp, #rnd
add esp, 13;
}
}
}
#()
{
#(#init::b)
{
sub esp, #init::b::code[1]::arg[1]
}
//Do some bs here
add esp, #init::code[0]::arg[1]
}
}