编译的方法是,在yacc分析文法时生成代码,yacc分析表达式时内部有一个分析栈,文法单元入栈顺序和执行顺序是一样的
比如,2+3*4,这个式子234依次入栈,然后3*4规约,再和2规约,这正是这个式子执行时的顺序
因此可以边分析文法别生成代码,代码使用“双栈”结构,一个用于运算表达式,另一个就是存放局部变量,正常用途
实际上就在一个栈中就可以实现,因为一个函数局部变量的大小是可以确定的
所以,EBP作为栈的基址用于索引,而ESP指向栈顶,用于运算表达式,栈区布局如下
operand operand .... var(-8) var(-4) ebp ...
- 浏览: 7634 次
- 来自: 浙江杭州

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
DHTML checkbox 选择的几 ...
function doFlgCheckedCheck() { if (docu ...
-- by congpeixue -
DHTML checkbox 选择的几 ...
就这几行破代码还加个版权,哎。
-- by i_love_sc






评论排行榜