zxh0/jvmgo-book

ch06 运行结果有异常

Closed this issue · 2 comments

作者您好,在拜读您的著作 自己动手写Java虚拟机。在运行ch06的代码的时候,发现有两处和书本结果不同的地方

  1. facoty.go 不支持0xb1 在运行的时候会抛出异常
  2. 在参照ch07的时候,发现会多出一个栈信息 pc:53 inst:*control.RETURN{}.然后提示jvm stack is empty 个人理解为这个时候return是结束标示,操作栈中应该是空,因此删除了frame.Thread().PopFrame()。此时提示index out of range。

如果想和书本上的运行结果一致,应该如何修改ch06的代码,谢谢

zxh0 commented

你好,能提供一下具体的代码吗?比如把你自己写的ch06、ch07代码zip一下传上来。或者加入这本书的读者群交流更方便一些。

@lvxinrong 这个错误是因为
func catchErr(frame *rtda.Frame) {
if r := recover(); r != nil {
fmt.Printf("LocalVars:%v\n", frame.LocalVars())
fmt.Printf("OperandStack:%v\n", frame.OperandStack())
panic(r)
}
}
这个错误属于正常报错,只需将其注释掉就行。