java程序的编译是基于栈操作的
1)压栈操作---〉数据来源常量值或从 常量池区取 常量压入操作数栈(一个字长的常量压入栈、两个字长的常量压入栈、将空(null)对象引用压入栈)。
2)操作数栈和局部变量之间一直在往返传输值。
3)有操作数、操作码,就能执行通用的栈操作了,当然这步是虚拟机解释执行的。
4)栈内按顺序执行、当然也涉及到栈内跳转,即编译后有goto字节码。
1)压栈操作---〉数据来源常量值或从 常量池区取 常量压入操作数栈(一个字长的常量压入栈、两个字长的常量压入栈、将空(null)对象引用压入栈)。
2)操作数栈和局部变量之间一直在往返传输值。
3)有操作数、操作码,就能执行通用的栈操作了,当然这步是虚拟机解释执行的。
4)栈内按顺序执行、当然也涉及到栈内跳转,即编译后有goto字节码。
5)解释性语言涉及优先级的运算,编译后产生的肯定是后缀表达式,这点可以确信(的确我通过汇编看到的java字节码也是这样的)。