無涯 发表于 2013-3-6 17:03:59

栈空间由谁分配

今天继续学校小甲鱼的汇编视频,第六章第二节 书上说到这样一句话,栈空间应该由系统分配,思索了一下产生了一点疑问,
这个系统指的是谁,windows?dos?汇编语言不是直接与硬件打交道么,中间怎么会隔着个第三者--系统类?!
问题或许略弱智,还望各位大神赐教。。。

a8690289 发表于 2013-3-6 17:04:00

呵呵,当然有第三者。CPU指令集,在主板上固化在芯片里,算是个系统。每个计算机没装 WINDOWS的时候是带系统的那就是这个.:P

無涯 发表于 2013-3-6 17:05:12

由我先自顶,求大神抽空解答

七月之变 发表于 2013-3-6 17:34:40

当然是windows,小甲鱼不是说过,windows是大骗子,让你误以为直接和硬件打交道,实际只是模拟

無涯 发表于 2013-3-6 18:29:27

我又凌乱了{:5_107:}

無涯 发表于 2013-3-6 21:05:09

七月之变 发表于 2013-3-6 17:34 static/image/common/back.gif
当然是windows,小甲鱼不是说过,windows是大骗子,让你误以为直接和硬件打交道,实际只是模拟

你让我凌乱了{:5_107:}

三☆毛_/ 发表于 2013-3-6 21:12:39

在操作系统上运行的程序都由操作系统管理,操作系统让他执行了,才能执行指令。

wanglihong19877 发表于 2013-3-6 21:35:07

你也在听汇编啊我昨天 一口气全听完了
对了 , 你有没有 认真的听 连DOS和 windows
都分不清楚啊
对不起   可能是说过分啦
但是 我肯定你没有听清楚
是不是老是听 小甲鱼 在说 苍井空想她呢?
系统当然是 windows 啦   DOS 是什么
算了还是你自己查查吧   那样你理解的会很深刻

wanglihong19877 发表于 2013-3-6 21:38:46

你们有没有想过 栈空间到底是干什么的在软件里   程序里游戏里起到什么作用?
可有知道的?好像 小甲鱼 没有说啊
可有知道的 大哥 大姐 们说说 呗      

半生缘 发表于 2013-3-6 22:33:15

这个 有系统的事吗 那要没系统呢 主要还是编译器吧 编译器 决定改不给你空间
编译器给你到时生成程序时 程序会占上空间

無涯 发表于 2013-3-6 22:48:30

wanglihong19877 发表于 2013-3-6 21:35 static/image/common/back.gif
你也在听汇编啊我昨天 一口气全听完了
对了 , 你有没有 认真的听 连DOS和 windows
都分不清楚啊   ...

dos也是系统啊,那以前没windows的时候请问是谁来分配

小小小小鱼 发表于 2013-3-6 23:14:27

不要在深究了~呵呵 以前还没有电脑这种东西呢

小小小小鱼 发表于 2013-3-6 23:26:24

wanglihong19877 发表于 2013-3-6 21:35 static/image/common/back.gif
你也在听汇编啊我昨天 一口气全听完了
对了 , 你有没有 认真的听 连DOS和 windows
都分不清楚啊   ...

过目不忘啊 一口气看了 70多级~~我要是有你这脑袋~多好

堕落づ天使 发表于 2013-3-7 00:13:11

本帖最后由 堕落づ天使 于 2013-3-7 00:16 编辑

总体来说 是由编译器来生成代码来分配并维护栈的 具体谁分配要看你函数类型了 比如 stdcall是函数被调用者来维护栈的
fastcall则是把前两个参数放在寄存器 被调用的函数来维护的

bafengao 发表于 2013-3-7 06:25:34

程序员设计,然后操作系统分配

无所无谓 发表于 2013-3-7 07:33:08

我是来学习的

平心 发表于 2013-3-7 08:02:32

API函数调用时,windows系统自由分配内存。

七月之变 发表于 2013-3-7 09:41:37

wanglihong19877 发表于 2013-3-6 21:38 static/image/common/back.gif
你们有没有想过 栈空间到底是干什么的在软件里   程序里游戏里起到什么作用?
可有知道的?好像 小 ...

push和pop指令所对的内存就是栈啊,用来存放临时变量用的

那个天真的人 发表于 2013-3-7 22:09:55

你可以这样认为吧,在32位下,一个平坦4g空间,中间有这么连续的2M(好像默认2M,就不纠结了)字节空间,只供push和pop栈指令使用,仅此而已。而你可能想说,那这个空间别的指令就用不到了?因为系统有规定,所以聪明的编译器在编译时是不会主动去侵犯这段空间的,这就完事啦。其实,也就是操作方式不同而已,它终究跟别的内存没啥区别。

wanglihong19877 发表于 2013-3-15 11:15:42

你觉得很难吗   不是我 脑袋好用只是我们的学习方法不一样吧   
有时间可以在一起研究一下
页: [1]
查看完整版本: 栈空间由谁分配