| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2892 人关注过本帖
标题:【汇编】三个问题,堆栈指针和空字符问题
只看楼主 加入收藏
davidguhao
Rank: 1
来 自:广东
等 级:新手上路
帖 子:126
专家分:7
注 册:2016-7-18
结帖率:89.47%
收藏
已结贴  问题点数:20 回复次数:4 
【汇编】三个问题,堆栈指针和空字符问题
1 为什么可以假设堆栈指针(stack pointer)是对其16字节边界的
2 为什么堆栈指针在调用子程序时,一定要进行16字节边界对齐
3 为什么字符串一定要使用空字符结尾……(LENGTHOF 完全可以胜任)
搜索更多相关主题的帖子: 子程序 字符串 
2016-09-08 18:02
zhulei1978
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:53
帖 子:1351
专家分:1200
注 册:2006-12-17
收藏
得分:0 
堆栈每次弹出都是一个字,所以要边界对齐。
字符串空字符结尾它程序就是那么设计的,读到空字符就结束读取。

其实我就是改变社会风气,提高少女素质,刺激电影市道,提高年轻人内涵,玉树临风,风度翩翩的整蛊专家,我名叫古晶,英文名叫JingKoo!
2016-09-08 21:31
davidguhao
Rank: 1
来 自:广东
等 级:新手上路
帖 子:126
专家分:7
注 册:2016-7-18
收藏
得分:0 
回复 2楼 zhulei1978
您还没有回答我的第一个问题

为什么可以这么假设?
我在书上看到作者就是说可以假设……

暨南大学市场营销……
但是我有一颗计算机专业的心……
2016-09-09 18:41
Valenciax
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:11
帖 子:340
专家分:2482
注 册:2016-5-15
收藏
得分:7 
一般程序不会主动修改sp值,其值均由编译器做初始化,段和段的最小差距为16字节,边界对齐是很自然的动作...
因此可以有这种假设
2016-09-09 22:05
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11787
专家分:43421
注 册:2006-5-13
收藏
得分:7 
CPU在读写非跨界数据时可以一次性操作,而对跨界数据则必须分两次操作,所以多字节数据尽量要做到字对齐,方便CUP处理。栈指针寄存器可能还无法做跨界操作,所以设置栈地址时不能跨界.
另外段寄存器是要左移4位再加偏移地址形成实际地址,也许是16字节边界对齐更利于CPU操作。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2016-09-10 08:41
快速回复:【汇编】三个问题,堆栈指针和空字符问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011395 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved