• OpenEuler中C语言中的函数调用测试


    20191218 2021-2022-1-diocs-OpenEuler中C语言中的函数调用测试

    在X86_64架构下实践2.4中的内容

    环境:Kali Linux Debian 10.x 64
    1. 32位GCC中的运行时堆栈使用情况

    • 编写main.c、sub.c

    • 编译运行

    • 使用gcc -m32 -g src/main.c src/sub.c -o test指令产生32位汇编,然后使用gdb test指令进入gdb调试器

    • 在main函数处设置断点,run

    • disass(disassemble)

    • i(info) r(registers)

      观察信息,可知在地址0x0x565561ce0x565561d1u和v被压入栈中

      于是u和v在栈中的地址为

      2. longjump

    • 编写代码,并编译运行

    • 运行结果

    • 分析堆栈变化
      生成调试文件

      进入gdb,设置断点并运行

    • diass

    • i r

    3. 64位GCC中的运行时堆栈使用情况

    • 生成64位t.s汇编文件

    • 查看堆栈变化
      生成调试文件

      disass和i r


    • arm64架构逻辑框图

    ARM64平台上的栈帧寄存器是FP,它记录的是一个函数执行过程中的栈顶(FP=SP),并且把父函数的FP保存在堆栈的栈顶,以便于回溯

  • 相关阅读:
    JSTL标签详解
    jQuery核心基础
    JavaWeb文件上传与下载
    AOP编程模式
    2022.3.1
    2022.2.7
    Postman安装完之后打开空白
    vue项目中vueparticles的使用
    字符串中出现次数最多的字符及其出现的次数
    elementui select选择器滑动加载下一页
  • 原文地址:https://www.cnblogs.com/20191218tangqiheng/p/15642989.html
Copyright © 2020-2023  润新知