基本的运算符应该是由虚拟机实现的吧,也就是用c或汇编语言写的,
你可以去研究一下汇编的代码
运算操作在内存中一般是由栈来实现的,用两个栈,一个存放数据,一个存放运算符。
在运算时,数据与运算符依次进栈,当下一个运算符在进栈时,首先要与运算符栈中栈顶的运算符做比较,
如果栈顶的运算符优先级较高,则这个运算符要先出栈并且与数据栈中出栈的两个数据做运算,
然后将运算结果压入数据栈中,这时下一个运算符才进栈,按这样的方式进行进栈出栈操作,
直到两个栈为空返回结果。
附个图片,简单画了画,竟然没有权限加图片,只好加到附件里了,有兴趣的下载下来看吧{:soso_e113:}
|
|