Mindustack:call return 初体验
repo
https://github.com/Mindustack/llvmir2mlog
https://gitee.com/k88936/llvmir2mlog
llvmir :
define i4 @main(i4 %s) {
0:
%se=call i4 @g( )
ret i4 %se
}
define i4 @g() {
2:
%15= call i4 @g()
ret i4 1
}
mlog:
0:
op add sp sp -4 #栈下降
write ra cell sp #保存返回地址
op add ra @counter 2
jump always 2 #call
read ra cell sp #还原
op add sp sp 4 #上升
set @counter ra #返回
2:
op add sp sp -4
write ra cell sp
op add ra @counter 2
jump always 2 #快乐迭代
set a0 1 #返回值
read ra cell sp
op add sp sp 4
set @counter ra