跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
  • Online Tools
  • 用户
  • 群组
折叠
品牌标识

D2Learn Forums

lu9943L

lu9943

@lu9943
关于
帖子
5
主题
2
群组
0
粉丝
0
关注
2

帖子

最新 最佳 有争议的

  • 怎么理解aarch64里的堆栈和寄存器?
    lu9943L lu9943

    在学反汇编遇到堆栈难以理解的问题,我理解的堆栈是:每产生一次函数调用,sub是开辟空间,ADD是释放空间,993c9e68-35b5-4d62-8ba4-901f78fae8dd-7c707f66fc44cc42dd206d4e8970b29.jpg 有一篇文章说:栈向低地址方向生长4eea2fb6-fc96-4dfb-8d36-803f75317a30-image.png ,
    这我就很纳闷了,要是往上生长,那不就是开辟空间是add吗?然后sp不是往上移动了吗?真的被这个绕晕了呀!(文章出处链接文本)
    这是我自己用ndk编译的aarch64平台的代码↓打算练习一下堆栈和寄存器运行原理,有必要纠结堆栈的高低地址和顶部底部吗?我的思路是想弄懂堆栈怎么一回事,然后才能分析寄存器在做什么,左边的汇编代码怎么用图1的方式画出来?有个图我觉得才能理解
    8ba4a676-8b57-4a97-b8a0-77b909c9419f-image.png
    代码

    #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;  
    }
    
  • 登录

  • 没有帐号? 注册

  • 登录或注册以进行搜索。
d2learn forums Powered by NodeBB
  • 第一个帖子
    最后一个帖子
0
  • 版块
  • 最新
  • 标签
  • 热门
  • Online Tools
  • 用户
  • 群组