对 C 系语言来说, 我们说的跨平台, 其实就是通过同一份源码在编译时, 根据不同 target 架构指令集, 生成不同的二进制文件来实现的.
1.2....主要是编译器内部对 C/C++ 概念的实现原理.
这个系列也是本着这个初衷展开, 适合对 AArch64 不熟, 或者熟悉 x86/64 的汇编, 想了解 AArch64 的同学....进程内存布局
熟悉程序加载到内存之后的布局, 对编写/阅读汇编代码至关重要, 这里我们熟悉一下经典的内存布局, 主要目的是方面理解后面的汇编代码. 这里不展开西说, 更详细的大家可以自行查询资料....所以我们也可以知道在 32 bit 指令集下, 虽然寻址空间最大 4GB, 因为用了虚拟内存, 实际上每个执行的进程都有 4GB 的寻址空间(一般是 1G 内核空间, 3G 用户空间), 并不是共享的....x, 值为 5
// | sp + 16| 就是 y, 值为 3
// | sp + 8 | 就是 z, 值为 4
// | sp | 未使用
// 可见这里入栈顺序和临时变量定义的顺序是一致的