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

1 什么是frame pointer frame pointer指向本函数栈帧顶,通过它可以找到本函数在进程栈中的位置.有专门的寄存器保存该值. 2 frame pointer有什么用 主要是backtrace用,每个函数的frame pointer保存在其后调用的函数的栈帧中.因此可以得到调用层级里面的每个函数的栈帧,从而可以打印出back trace. 3 程序执行的过程中为什么可以不要frame pointer 在汇编层面的每个函数自己内部就完成了push和pop栈的操作,每个函数知道自己…
更多参考:http://www.embeddedrelated.com/usenet/embedded/show/31646-1.php 一: The calling convention described in this section is the one used by gcc, not the native MIPS compiler, which uses a more complex convention that is slightly faster. Figure 6: Lay…
http://en.citizendium.org/wiki/Stack_frame To use a stack frame, a thread keeps two pointers, often called the Stack Pointer (SP), and the Frame (FP) or Base Pointer (BP). SP always points to the "top" of the stack, and FP always points to the &…
main.c ; int main() { int a, b; int sum; a = ; b = ; sum = add(a, b); ; } int add(int a, int b) { int x, y; x = a; y = b; return (x+y); } int del() { ; } 汇编如下: main.elf: file format elf32-sparc Disassembly of section .text: <main>: : 9d e3 bf save %…
一.前言 今天我们继续来看破解apk的相关知识,在前一篇:Eclipse动态调试smali源码破解apk 我们今天主要来看如何使用IDA来调试Android中的native源码,因为现在一些app,为了安全或者效率问题,会把一些重要的功能放到native层,那么这样一来,我们前篇说到的Eclipse调试smali源码就显得很无力了,因为核心的都在native层,Android中一般native层使用的是so库文件,所以我们这篇就来介绍如何调试so文件的内容,从而让我们破解成功率达到更高的一层.…
寄存器: 寄存器号            符号名            用途 0                 始终为0     看起来象浪费,其实很有用 1                 at          保留给汇编器使用 2-3               v0,v1       函数返回值 4-7               a0-a3       前头几个函数参数 8-15              t0-t7       临时寄存器,子过程可以不保存就使用 24-25    …
http://www.mouseos.com/win64/registers.html Seems UEFI using rcx, rdx, r8, r9, r10, r11, r12 to store argv 下面是摘自 MSDN 的文章,在 Win64 下的 registers 用途 Register Status Use RAX Volatile Return value register RCX Volatile First integer argument RDX Volatile…
linux内核调试指南 一些前言 作者前言 知识从哪里来 为什么撰写本文档 为什么需要汇编级调试 ***第一部分:基础知识*** 总纲:内核世界的陷阱 源码阅读的陷阱 代码调试的陷阱 原理理解的陷阱 建立调试环境 发行版的选择和安装 安装交叉编译工具 bin工具集的使用 qemu的使用 initrd.img的原理与制作 x86虚拟调试环境的建立 arm虚拟调试环境的建立 arm开发板调试环境的建立 gdb基础 基本命令 gdb之gui gdb技巧 gdb宏 汇编基础--X86篇 用户手册 AT&…
C和C++ 编译器是集成的.他们都要用四个步骤中的一个或多个处理输入文件: 预处理 (preprocessing),编译(compilation),汇编(assembly)和连接(linking).源文件后缀名标识源文件的 语言,但是对编译器来说,后缀名控制着缺省设定: gcc  认为预处理后的文件(.i)是C文件,并且设定C形式的连接. g++  认为预处理后的文件(.i)是C++ 文件,并且设定C++ 形式的连接. 源文件后缀名指出语言种类以及后期的操作: .c      C源程序;预处理,…
转自:http://blogold.chinaunix.net/u2/69404/showart_1922655.html ARM GCC 内嵌(inline)汇编手册 百度云:http://pan.baidu.com/s/1qW6my52 关于这篇文档这篇文章是本人为方便各位业界同仁而翻译,方便大家开发底层代码使用,转载请注明出处,谢谢.要是你E文功底好,本人还是建议阅读E文版的. http://www.ethernut.de/en/documents/arm-inline-asm.html…