linux程序计数器,如何在C中打印程序计数器的确切值
小编典典
您应该能够使用ARM编译器工具链中的__current_pc()内在函数来确定PC
(ARM编译器支持许多与GCC相同的扩展)。*这是ARM特有的:
int main () {
printf("%#x\n", __current_pc());
printf("%#x\n", __current_pc());
printf("%#x\n", __current_pc());
return 0;
}
*感谢FrankH。指出存在__current_pc()
通常,PC在函数调用中被保存为返回地址。在具有GCC的非ARM linux系统上,您可以调用__builtin_return_address(0)以获取当前函数调用上下文的返回地址。以这种方式获得程序计数器会增加添加函数调用的代价,但是避免了内联汇编,因此该技术可移植到GCC支持的任何系统中。
void * get_pc () { return __builtin_return_address(0); }
int main () {
printf("%p\n", get_pc());
printf("%p\n", get_pc());
printf("%p\n", get_pc());
return 0;
}
当我在x86系统上运行上述程序时,它将产生输出:
0x8048432
0x8048447
0x804845c
在拆卸时gdb:
Dump of assembler code for function main:
0x08048424 : push %ebp
0x08048425 : mov %esp,%ebp
0x08048427 : and $0xfffffff0,%esp
0x0804842a : sub $0x10,%esp
0x0804842d : call 0x804841c
0x08048432 : mov %eax,0x4(%esp)
0x08048436 : movl $0x8048510,(%esp)
0x0804843d : call 0x80482f0
0x08048442 : call 0x804841c
0x08048447 : mov %eax,0x4(%esp)
0x0804844b : movl $0x8048510,(%esp)
0x08048452 : call 0x80482f0
0x08048457 : call 0x804841c
0x0804845c : mov %eax,0x4(%esp)
0x08048460 : movl $0x8048510,(%esp)
0x08048467 : call 0x80482f0
0x0804846c : mov $0x0,%eax
0x08048471 : leave
0x08048472 : ret
End of assembler dump.
2020-06-03
相关文章:

『转载』Debussy快速上手(Verdi相似)
『转载』Debussy快速上手(Verdi相似) Debussy 是NOVAS Software, Inc(思源科技)发展的HDL Debug & Analysis tool,这套软体主要不是用来跑模拟或看波形,它最强大的功能是:能够在HDL source code、schematic diagra…

大家好,新年快乐。
刚申请了个博客,祝大家新年快乐。 ------------- So many children are playing zhu zhu pets at home.This t…

maven项目找不到pom.xml配置的dependency jar中的类问题解决方法
成功创建一个web项目后,假如我们在web.xml文件中,配置了spring的listener,在pom.xml中也已经作了依赖配置。部署 完项目后,启动项目,发现找不到spring配置的listner 类:org.springframework.web.context.Co…

红旗linux yum,更换红旗Linux: Asianux的yum源为网易源
测试环境:Linux系统版本Asianux4_x64:Linux localhost.localdomain 2.6.32-279.2.1.el6.x86_64 #1 SMP Tue Aug 14 11:42:24 CST 2012 x86_64 x86_64 x86_64 GNU/Linux本质上Asianux4_x64就是基于Redhat6企业版的。出现问题:安装完系统之后&a…

Java Socket编程 - 基于TCP方式的二进制文件传输【转】http://blog.csdn.net/jia20003/article/details/8248221...
此人博客挺好的,推荐一个! 一个基于Java Socket协议之上文件传输的完整示例,基于TCP通信完成。 除了基于TCP的二进制文件传输,还演示了JAVA Swing的一些编程技巧,Demo程序 实现主要功能有以下几点: 1. …

SuSE下VNCVIEWER没有出现界面,只有shell窗口的问题
首先正确配置,打开vncserver :1,实际上有三个服务,vnc1,vnc2,vnc3,对应着三个服务,先打开。 可以直接在shell下输入 #vncserver :1.也可以使用界面打开Network Service (xinetd),将服…

docker容器互联
link方式 http://blog.csdn.net/halcyonbaby/article/details/42112325 通过link方式创建容器,然后我们可以使用被link容器的别名进行访问。从而解除应用对IP的依赖。不幸的是,link方式只能解决单机容器间的互联。多机情况下,容器的互联需要其他的方式。…

glib 2.0 arm linux,glib源码安装使用方法
glib库是GTK和GNOME工程的基础底层核心程序库,是一个综合用途的实用的轻量级的C程序库,它提供C语言的常用的数据结构的定义、相关的处理函数,有趣而实用的宏,可移植的封装和一些运行时机能,如事件循环、线程、动态调用…
iOS 用自签名证书实现 HTTPS 请求的原理实例讲解
在16年的WWDC中,Apple已表示将从2017年1月1日起,所有新提交的App必须强制性应用HTTPS协议来进行网络请求。默认情况下非HTTPS的网络访问是禁止的并且不能再通过简单粗暴的向Info.plist中添加NSAllowsArbitraryLoads设置绕过ATS(App Transport Security)的…

WordPress Editorial Calendar插件权限安全绕过漏洞
漏洞名称:WordPress Editorial Calendar插件权限安全绕过漏洞CNNVD编号:CNNVD-201302-369发布时间:2013-02-22更新时间:2013-02-22危害等级: 漏洞类型:权限许可和访问控制威胁类型:远程CVE编号…

文件操作(ifstream、ofstream、fstream)
原文链接:http://blog.csdn.net/soar_ersa/article/details/3908943 转载于:https://www.cnblogs.com/MrYuan/p/5288264.html
linux error log 换行,日志提示
日志提示线上问题,需要看日志。控制台可以打印Mybatis操作的SQL语句。开发流程:第一步:加入依赖image.png第二步:在项目的resources中加入log4j属性文件image.png第三步:演示image.png扩展了解一、日志概念的介绍Log4j…

本页面添加至收藏夹
经常在网站页面上需要把本页面添加至收藏夹 <script type"text/javascript">function addMe() {var url document.location.href;var wTitle document.title;if (document.all) {window.external.addFavorite(url, wTitle);} else if (window.sidebar) {wind…

javascript——Array类型
今天这节教程不仅仅是阐述ECMAScript3的部分功能,同时也会阐述有关EXMASctip5的很多新的功能。 一、创建 因为它是一个引用类型,自然就需要在使用前先构造它。 我将分成两种方式来讲述 I、构造函数 1.空的Array实例 var colors new Array(); 2.初始化存…

iOS使用自签名证书实现HTTPS请求
原文链接:http://www.jianshu.com/p/e6a26ecd84aa 由于苹果规定2017年1月1日以后,所有APP都要使用HTTPS进行网络请求,否则无法上架,因此研究了一下在iOS中使用HTTPS请求的实现。相信大家对HTTPS都或多或少有些了解,这里我就不再介…

蜜蜂实训平台c语言考试答案,北理c语言上机答案(全)
小蜜蜂的不过,麻烦大家上百度找一下~1 Hello world让我们用C语言向世界问好。 最早的程序基本是这个样子的: 程序一:#include void main() {printf("Hello world.\n"); }程序二:#include int main() {printf("Hello world.\n&…

ecshop目录结构
ECShop 最新程序 的结构图及各文件相应功能介绍ECShop文件结构目录┣ activity.php 活动列表┣ affiche.php 广告处理文件┣ affiliate.php 生成商品列表┣ article.php 文章内容┣ article_cat.php文章分类┣ auction.php 拍卖前台文件┣ brand.php 品牌列表┣ captcha.php 生…
一劳永逸,iOS 网页视图控制器通用类封装
原文链接:http://www.jianshu.com/p/553424763585随着 H5 的发展,在 iOS 开发中,网页视图的使用率逐渐提升,为了增加代码封装度、减轻开发负担,因此通常会对网页视图进行通用类的封装,本文简单讲述网页视图…

enyo官方开发入门教程翻译一Layout之Fittables
Fittables Fittable包帮助你创建布局更合理的使用可用空间(app都有这样的布局需求,但使用以前的web技术很难做到这一点)。个人观点,现在移动Web开发框架中有很多都支持自适应布局,如senchatouch,但是enyo的…

c语言 栈结构存放数据类型,数据结构——栈的详解
栈和队列是两种重要的线性结构,从数据结构的角度看,栈和队列也是线性表,其特殊性在于栈和队列的基本操作是线性表的子集。他们是操作受限的线性表,因此,可称为限定性的数据结构。但从数据类型角度看,他们是…

Verlet Integration
Verlet Integration Verlet 积分法是一种用于求解牛顿运动方程的数值方法,被广泛运用于动力学模拟以及视频游戏中。尔莱算法的优点在于:数值稳定性比简单的欧拉方法高很多,并保持了物理系统中的时间可逆性与相空间体积元体积守恒的性质。 基本…

[译] iOS 开发之新版 APNs 搭建必备知识
原文链接:http://www.jianshu.com/p/d8dba6c2c07a本文的大部分内容是对苹果关于 APNs 官方文档的翻译以及整理。 —— 由 稀土君 分享本文的大部分内容是对苹果关于APNs官方文档的翻译以及整理。 一、设备token和消息的生命周期 关于设备token以及推送消息的生命周期…

使用Application.GetResourceStream从XAP安装包加载任意资源
不得不说,WP7开发的资料真的是太少了,国内有句话叫“天下文章一大抄”,查Application.GetResourceStream的用法,找遍了整个网络,无非就那一两篇,而且写得还不完整,包括微软官方的例子。在花了近…

c语言知道算法写不出代码,这个代码怎么写算法啊,求教,我真的不会写算法怎么办#incl...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼这个代码怎么写算法啊,求教,我真的不会写算法怎么办#include "stdio.h"#define N 3 //学生数3。struct Student //建立结构体。{int num;char name[20];float score[3];float aver;};int main(){v…

猎豹MFC--列表控件ListControl
ListControl添加变量:关联控件变量:初始化:设置样式 添加列标题:添加位图资源:添加位图变量:创建图像列表:并把图像列表 给 列表控件使用:双击添加行按钮:添加第2列时 不…
iOS 命令行自动打包 (archive)
原文链接:http://www.jianshu.com/p/2247f76404ebiOS 开发工程师在测试修复 bug 的过程中,一般会存在频繁打包的情况,如果一步步在 xcode 中点击 archive,下一步,下一步。。。这样太浪费我们的时间了。下面我们来介绍在…

看看现在大型网站都是用什么语言写的 ?
看看现在大型网站都是用什么语言写的 ? 不排除一个网站用多种技术!如淘宝是Java php,底层是java,表现层是php。新浪,网易,腾讯应该也是用了多种技术。 据说是这样的:php,新浪&#…

数据结构 算法与应用C 语言描述第六章,数据结构算法与应用-C语言描述002.pdf
下载下载第2 章 程 序 性 能以下是本章中所介绍的有关程序性能分析与测量的概念:• 确定一个程序对内存及时间的需求。• 使用操作数和执行步数来测量一个程序的时间需求。• 采用渐进符号描述复杂性,如 O、 、 、o 。• 利用计时函数测量一个程序的实际…
GCD 容易让人迷惑的几个小问题
来源:涂耀辉 链接:http://www.jianshu.com/p/ff444d664e51 写在开头: 本文旨在阐述一些大家容易产生迷惑的GCD相关内容,如果是需要了解一些GCD概念或者基础用法,可以看看这两篇文章:GCD 扫盲篇、巧谈GCD 。…

【贪心】【codevs】1214 线段覆盖
http://codevs.cn/problem/1214/ 我去这个题。。。wa的我都没脾气了。。。 我写while(~scanf(“%d”, &n))竟然是不对的。。。 这个程序你妹多次输入是不能结束的????…