汇编语言中的栈的ss:sp,数据结构中的栈的指针,内部是如何联系上的?

b245930557 2011-03-09 12:57:50
《汇编语言》的push指令执行,sp-2;
《数据结构》的压栈,是top指针加1;
这两个应该是一个意思的吧!
那么 汇编语言的push 到 数据结构的push 的转换是怎么实现的;
或者说是是一个什么样的对应关系,咋一个加一个减~~就想弄明白
...全文
163 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2011-03-09
  • 打赏
  • 举报
回复
x86汇编32位环境push eax;dword ptr [ss:esp]=eax,esp=esp-4
赵4老师 2011-03-09
  • 打赏
  • 举报
回复
x86汇编16位环境push ax;word ptr [ss:sp]=ax,sp=sp-2
x86汇编32位环境push eax;dword ptr [ss:esp]=eax,sp=sp-4
push、pop对应加、减还是减、加堆栈指针值决定于栈底和栈顶谁的内存地址大。
至于加1还是2还是4还是8决定于8位还是16位还是32位还是64位运算环境,单位是一个字节别忘了。
而数据结构里面指针加1,那单位是一个数据单元。
不知道解释得够清楚不?
ForestDB 2011-03-09
  • 打赏
  • 举报
回复
两码子事,两本书说的是两个不同的东西,唯一相同的是都在说“栈”这个概念;
而只要满足“先进后出”原则的都是栈;
至于加一减一只是实现上的差别。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧