1 什么是frame pointer

frame pointer指向本函数栈帧顶,通过它可以找到本函数在进程栈中的位置。有专门的寄存器保存该值。

2 frame pointer有什么用

主要是backtrace用,每个函数的frame pointer保存在其后调用的函数的栈帧中。因此可以得到调用层级里面的每个函数的栈帧,从而可以打印出back trace。

3 程序执行的过程中为什么可以不要frame pointer

在汇编层面的每个函数自己内部就完成了push和pop栈的操作,每个函数知道自己所使用的这段栈的栈结构,在开始执行的时候把变量和常用寄存器push进去,在执行完了后,pop出来。因此程序执行过程中是不需要frame pointer的。

frame pointer及其用途的更多相关文章

  1. 栈帧示意图:stack pointer、frame pointer

    更多参考:http://www.embeddedrelated.com/usenet/embedded/show/31646-1.php 一: The calling convention descr ...

  2. How a stack frame works 栈帧的要素与构建步骤

    http://en.citizendium.org/wiki/Stack_frame To use a stack frame, a thread keeps two pointers, often ...

  3. sparc v8 stack frame calling convention

    main.c ; int main() { int a, b; int sum; a = ; b = ; sum = add(a, b); ; } int add(int a, int b) { in ...

  4. Android动态方式破解apk进阶篇(IDA调试so源码)

    一.前言 今天我们继续来看破解apk的相关知识,在前一篇:Eclipse动态调试smali源码破解apk 我们今天主要来看如何使用IDA来调试Android中的native源码,因为现在一些app,为 ...

  5. MIPS指令集相关

    寄存器: 寄存器号            符号名            用途 0                 始终为0     看起来象浪费,其实很有用 1                 at  ...

  6. Win 64 register usage

    http://www.mouseos.com/win64/registers.html Seems UEFI using rcx, rdx, r8, r9, r10, r11, r12 to stor ...

  7. linux内核调试指南

    linux内核调试指南 一些前言 作者前言 知识从哪里来 为什么撰写本文档 为什么需要汇编级调试 ***第一部分:基础知识*** 总纲:内核世界的陷阱 源码阅读的陷阱 代码调试的陷阱 原理理解的陷阱 ...

  8. gcc g++ 参数介绍

    C和C++ 编译器是集成的.他们都要用四个步骤中的一个或多个处理输入文件: 预处理 (preprocessing),编译(compilation),汇编(assembly)和连接(linking).源 ...

  9. ARM GCC 内嵌(inline)汇编手册

    转自:http://blogold.chinaunix.net/u2/69404/showart_1922655.html ARM GCC 内嵌(inline)汇编手册 百度云:http://pan. ...

随机推荐

  1. Oracle 学习之:ASCII,CHR函数的作用和用法

    对于ASCII以及CHR函数的用法,Oracle给出的解释是: ASCII(x)gets the ASCII value of the character X, CHR() and ASCII() h ...

  2. while(n--)

    while(n--)的意思:先判断n是否等于0,如果等于0,就不循环.如果不等于0,就进入循环,同时n的值减1.一直等到n=0才退出while循环. C语言.C++

  3. MySQL异常:Caused by: com.mysql.jdbc.exceptions.MySQLTimeoutException: Statement cancelled due to timeout or client request

    Caused by: com.mysql.jdbc.exceptions.MySQLTimeoutException: Statement cancelled due to timeout or cl ...

  4. centos7搭建安装sentry

    Sentry 是一款基于 Django实现的错误日志收集和聚合的平台,它是 Python 实现的,但是其日志监控功能却不局限于python,对诸如 Node.js, php,ruby, C#,java ...

  5. element-UI 多表单重置的时候的坑

    问题细化一下是这样的:比如我有一个用来修改数据的表单,第一条数据是{name: 'Xixi', age: 12},打开表单后就有两个输入框分别填的是Xixi和12,此时我修改Xixi为Haha,调用t ...

  6. Borrowers

    Description I mean your borrowers of books - those mutilators of collections, spoilers of the symmet ...

  7. js变量类型详解

    <html> <title>js变量类型详解</title> <meta http-equiv="content-type" conten ...

  8. CodeForcesGym 100524A Astronomy Problem

    Astronomy Problem Time Limit: 8000ms Memory Limit: 524288KB This problem will be judged on CodeForce ...

  9. thinkphp整合系列之微信公众号支付

    <?phperror_reporting(E_ALL);ini_set('display_errors', '1');// 定义时区ini_set('date.timezone','Asia/S ...

  10. C# 3.0特性

    C# 3.0的扩展特性主要包括以下几点,我们在后面也会按照这个顺序进行介绍:1.隐式局部变量(implicitly typed local variables),通过初始化该局部变量的表达式自动推断出 ...