在学反汇编遇到堆栈难以理解的问题,我理解的堆栈是:每产生一次函数调用,sub是开辟空间,ADD是释放空间, 有一篇文章说:栈向低地址方向生长 ,
这我就很纳闷了,要是往上生长,那不就是开辟空间是add吗?然后sp不是往上移动了吗?真的被这个绕晕了呀!(文章出处链接文本)
这是我自己用ndk编译的aarch64平台的代码↓打算练习一下堆栈和寄存器运行原理,有必要纠结堆栈的高低地址和顶部底部吗?我的思路是想弄懂堆栈怎么一回事,然后才能分析寄存器在做什么,左边的汇编代码怎么用图1的方式画出来?有个图我觉得才能理解
代码
#include <stdio.h>
#include <string.h>
int main() {
char password[10];
while (1) {
printf("请输入卡密: ");
scanf("%9s", password); // 限制输入长度,防止缓冲区溢出
if (strcmp(password, "123") == 0) {
printf("登录成功!\n");
break;
} else {
printf("密码错误,请重新输入。\n");
}
}
return 0;
}