补一个大小端序,栈增长,迭代方向的底层数据处理笔记

发布于 2021-08-31  44 次阅读


突然发现这几个东西完全搞混了谁管辖谁

在任何情况下都有一个共识,那就是作为一个数组,0号元素存储在地址地位,最后一个元素存储在地址高位

不论地址增长方式,不论大小端,这个是共识

这个共识来自:迭代方向在微观和宏观上的统一

如果我for循环是0到30,计数器i++,那么微观上我们会用inc(也有的编译器是用ecx)

如果元素储存方向和栈增长方向相同:0号存储在最高位,最后一个元素存在栈顶,地址最低位

这样i++在底层汇编就变成dec了!完全相反

实际上,大小端序真正的含义是单个元素内部的字节顺序安排(数据高位和低位)与栈增长方向(地址大小关系)的关系

参考

https://jaimelightfoot.com/blog/pwnables-kr-collision-walkthrough/

https://zhuanlan.zhihu.com/p/21388517