Mindustack:call return 初體驗(yàn)
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 ? ? ? #快樂(lè)迭代
? set a0 1 ? ? ? ? ? ?#返回值
? read ra cell sp
? op add sp sp 4
? set @counter ra
標(biāo)簽: