xiaohaituan 发表于 2017-12-6 12:00:09

运算

为啥要保存到栈中?

BngThea 发表于 2017-12-6 12:34:19

因为这里教的就是栈

xiaohaituan 发表于 2017-12-6 12:49:02

BngThea 发表于 2017-12-6 12:34
因为这里教的就是栈

可能我问的表达不够清楚,我是想问,保存这一步是不是多余的?

tailor_long 发表于 2017-12-6 12:56:48

如果仅仅针对这一个程序而且楼主大人仅仅想得到本题的正确结果,那么压栈的操作完全可以不用!也就是说那几个push确实是多余的。
但是如果这一段代码是某一个大型程序的一小部分,那么这几个push就相当必要了!因为他可以起到保存变量的作用!!!而且为了程序的健壮性,最好在调用其他函数的时候,将几个寄存器中的变量进行压栈处理。

xiaohaituan 发表于 2017-12-6 13:27:25

可以理解为当再次用到这些变量并且赋值不同时,让计算机可以清楚的知道哪个变量属于哪个程序的?

兰陵月 发表于 2017-12-6 13:27:56

xiaohaituan 发表于 2017-12-6 12:49
可能我问的表达不够清楚,我是想问,保存这一步是不是多余的?

哪一步?

xiaohaituan 发表于 2017-12-6 13:30:18

兰陵月 发表于 2017-12-6 13:27
哪一步?

入栈那一步

xiaohaituan 发表于 2017-12-6 13:43:25

tailor_long 发表于 2017-12-6 12:56
如果仅仅针对这一个程序而且楼主大人仅仅想得到本题的正确结果,那么压栈的操作完全可以不用!也就是说那几 ...

还想问下,变量的值在指令中改变,那保存在栈中的值会不会随之改变

tailor_long 发表于 2017-12-6 14:15:30

xiaohaituan 发表于 2017-12-6 13:43
还想问下,变量的值在指令中改变,那保存在栈中的值会不会随之改变

不会的,变量的值的改变是改变当前寄存器中的值,并不会改变栈中的值的。往往当我们调用一个函数结束之后,就会使用pop命令弹出栈的值。
总的来说:栈就相当于一个“备份区”,你不能直接更改栈中数据(就像直接对栈中的数据进行加减乘除什么的,这一般来说是不允许的),当想保护某一个数据的时候,就push一下,当需要使用数据的时候,就POP一下

兰陵月 发表于 2017-12-6 21:19:59

xiaohaituan 发表于 2017-12-6 13:30
入栈那一步

很有必要,你现在是看的程序不多,编写的程序也不长,等你越来越熟练汇编,你会发现栈的发明和使用是一个多么美妙的事情,要靠慢慢体会。
页: [1]
查看完整版本: 运算