就是说 栈指针是往高地址还是低地址伸展的 我是这么想的 如果一个函数局部变量每增加一个 地址增大的话 就是往高地址伸展 反之亦然 也就是 func() { int a; int b; } stack_direct = (&a<&b)? GROW_HIGH: GROW_LOW; 然而我在一段代码看到 它是这么判断的 statck_direct = testStack(NULL); testStack(void* p) { n=&p; if(n==NULL) return testStack(n); else{ if(&n
by wilos - 内核源码 - 2009-05-18 15:18:57 阅读(3631) 回复(7)
闲来无事,大家写个呢,怎么不能隐藏?[code] /* return -1 if stack grow downward, otherwise 1 is returned */ int stack_grow_is (char *stack) { char addr[16]; return stack ? (addr < stack ? -1 : 1) : stack_grow_is(addr); } [/code]
栈的增长方向 版权声明 :转载时请以超链接形式标明文章原始出处和作者信息及 本声明 http://dreamhead.blogbus.com/logs/4840895.html 如何判断栈的增长方向? 对于一个用惯了i386系列机器的人来说,这似乎是一个无聊的问题,因为栈就是从高地址向低地址增长。不过,显然这不是这个问题的目的,既然把这个问题拿出来,问的就不只是i386系列的机器,跨硬件平台是这个问题的首先要考虑到的因素。 在一个物质极大丰富的年代,除非无...
如何判断栈的增长方向? 对于一个用惯了i386系列机器的人来说,这似乎是一个无聊的问题,因为栈就是从高地址向低地址增长。不过,显然这不是这个问题的目的,既然把这个问题拿出来,问的就不只是i386系列的机器,跨硬件平台是这个问题的首先要考虑到的因素。 在一个物质极大丰富的年代,除非无路可退,否则我们坚决不会使用汇编去解决问题,而对于这种有系统编程味道的问题,C是一个不错的选择。那接下来的问题就是如何...
在阅读wget源代码的过程中,发现一个用C语言实现,获得堆栈增长方向的巧妙方法 wget版本为1.11.4 函数位置: $ pwd /home/c-aries/source/wget-1.11.4/src $ grep -n "^find_stack_direction" alloca.c 119:find_stack_direction () $ 实现代码: static void find_stack_direction () { static char *addr = NULL; /* Address of first `dummy', once known. */ auto char dummy; /* To get stack address. */ if (...
在Linux系统中,不同的进程对应不同的内存地址空间,他们是不是可以有相同的地址? 我在一个进程中把某段内存区域初始化为全F(程序暂停),在另一个进程中读出这个地址的数据得到的并不是全F,谁给说说,谢谢。
1,INTEL CPU好像是独立编址的,内存可以到4G,而io只有64K,读写io有专门的in,out指令 对吧? 2,如果1对的话(以前学校微机原理是是这样的),那么现在的外设比如显卡那么大的RAM不可能只映射到64K的io空间吧?是不是映射到了内存地址空间?这里映射就是物理上直接练到了cpu的内存地址总线上? 3,这样的话系统实际可用的内存不就变小了吗?比如说系统上外设只有一个512M的显卡,这样的话内存最大也就只能到4G-512M了,对不对...