逆向-beginners之C++ 线程本地存储TLS

#include <iostream>
#include <thread>

/*
 * 线程本地存储(Thread Local Storage, TLS)是一种在线程内部共享数据的数据交换区域。
 *
 * 每个线程都可以在这个区域保存它们要在内部共享的数据。
 *
 * 一个比较知名的例子是C语言的全局变量errno。对于errno这类的全局变量来说,如果多线程进程的某一个线程对其进行了
 * 修改,那么这个变量就会影响到其他所有的线程。这显然和实际需求相悖,因此全局变量errno必须保存在TLS中。
 *
 * 为解决这个矛盾,C++11标准新增了一个限定符thread_local。它能将指定变量和特定的线程联系起来。由它限定的变量被
 * 初始化,并且会被保存在TLS中。
 */ 

thread_local int tmp = 3;

int main()
{
    std::cout << tmp << std::endl;
}


#if 0
/*
 * intel
 */
00000000000011a9 <main>:
    11a9:    f3 0f 1e fa              endbr64 
    11ad:    55                       push   %rbp
    11ae:    48 89 e5                 mov    %rsp,%rbp
    11b1:    64 8b 04 25 fc ff ff     mov    %fs:0xfffffffffffffffc,%eax
    11b8:    ff 
    11b9:    89 c6                    mov    %eax,%esi
    11bb:    48 8d 3d 7e 2e 00 00     lea    0x2e7e(%rip),%rdi        # 4040 <_ZSt4cout@@GLIBCXX_3.4>
    11c2:    e8 e9 fe ff ff           callq  10b0 <_ZNSolsEi@plt>
    11c7:    48 89 c2                 mov    %rax,%rdx
    11ca:    48 8b 05 ff 2d 00 00     mov    0x2dff(%rip),%rax        # 3fd0 <_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GLIBCXX_3.4>
    11d1:    48 89 c6                 mov    %rax,%rsi
    11d4:    48 89 d7                 mov    %rdx,%rdi
    11d7:    e8 b4 fe ff ff           callq  1090 <_ZNSolsEPFRSoS_E@plt>
    11dc:    b8 00 00 00 00           mov    $0x0,%eax
    11e1:    5d                       pop    %rbp
    11e2:    c3                       retq   

/*
 * arm
 */
00000000004008bc <main>:
  4008bc:    a9bf7bfd     stp    x29, x30, [sp, #-16]!
  4008c0:    910003fd     mov    x29, sp
  4008c4:    d53bd040     mrs    x0, tpidr_el0
  4008c8:    91400000     add    x0, x0, #0x0, lsl #12
  4008cc:    91004000     add    x0, x0, #0x10
  4008d0:    b9400001     ldr    w1, [x0]
  4008d4:    b0000080     adrp    x0, 411000 <_ZNSolsEi@GLIBCXX_3.4>
  4008d8:    91016000     add    x0, x0, #0x58
  4008dc:    97ffff95     bl    400730 <_ZNSolsEi@plt>
  4008e0:    aa0003e2     mov    x2, x0
  4008e4:    90000000     adrp    x0, 400000 <tmp+0x400000>
  4008e8:    911ec000     add    x0, x0, #0x7b0
  4008ec:    aa0003e1     mov    x1, x0
  4008f0:    aa0203e0     mov    x0, x2
  4008f4:    97ffffab     bl    4007a0 <_ZNSolsEPFRSoS_E@plt>
  4008f8:    52800000     mov    w0, #0x0                       // #0
  4008fc:    a8c17bfd     ldp    x29, x30, [sp], #16
  400900:    d65f03c0     ret


#endif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/87496.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《计算机网络》——应用层

2.1 应用层协议原理&#xff08;P54&#xff09; 研发网络应用的核心是写出能够运行在不同端系统和通过网络彼此交流的程序。 2.1.1 网络应用程序体系结构 两种主流的应用体系结构&#xff1a;客户-服务器体系结构、对等体系结构。 客户-服务器体系&#xff1a;服务器是一个…

最新《2023上半年网络安全观察报告》发布,解读网络安全发展

回顾2023上半年&#xff0c;人工智能大模型飞速应用于网络攻击与对抗&#xff0c;颠覆传统攻防场景&#xff0c;新型安全威胁凸显&#xff1b;国产化系统漏洞被大规模利用&#xff0c;严重威胁国内用户数据安全与财产安全&#xff1b;个人信息泄露问题频频出现&#xff0c;数据…

MySQL报错:json_contains: “The document is empty.“ at position 0.

起因 在使用json_contains查询MySQL表里面的JSON字段数据时&#xff0c;报错&#xff1a;3141 Invalid JSON text in argument 1 to function json_contains: "The document is empty." at position 0. 经过 通过排查发现&#xff0c;是因为所查JSON字段json_field…

机器学习——SVM(支持向量机)

0、前言&#xff1a; SVM应用&#xff1a;主要针对小样本数据进行学习、分类和回归&#xff08;预测&#xff09;&#xff0c;能解决神经网络不能解决的过学习问题&#xff0c;有很好的泛化能力。&#xff08;注意&#xff1a;SVM算法的数学原理涉及知识点比较多&#xff0c;所…

【ELFK】之消息队列kafka

一、kafka的定义 Kafka 是一个分布式的基于发布/订阅模式的消息队列&#xff08;MQ&#xff0c;Message Queue&#xff09;&#xff0c;主要应用于大数据实时处理领域。Kafka 是最初由 Linkedin 公司开发&#xff0c;是一个分布式、支持分区的&#xff08;partition&#xff0…

复习Day03:数组part03:76 . 最小覆盖子串、438. 找到z字符串z中所有字母异位词

之前的blog链接&#xff1a;https://blog.csdn.net/weixin_43303286/article/details/131700482?spm1001.2014.3001.5501 我用的方法是在leetcode再过一遍例题&#xff0c;明显会的就复制粘贴&#xff0c;之前没写出来就重写&#xff0c;然后从拓展题目中找题目来写。辅以Lab…

Linux chown命令:修改文件和目录的所有者和所属组

chown 命令&#xff0c;可以认为是 "change owner" 的缩写&#xff0c;主要用于修改文件&#xff08;或目录&#xff09;的所有者&#xff0c;除此之外&#xff0c;这个命令也可以修改文件&#xff08;或目录&#xff09;的所属组。 当只需要修改所有者时&#xff0c…

中国城市政商关系健康总指数、方面指数及一级指标得分2018

中国城市政商关系健康总指数、方面指数及一级指标得分2018 1、指标&#xff1a;省份代码、省份、城市代码、城市名称、政商关系健康指数、亲近指数、清白指数、政府关心、政府服务、企业税负、政府廉洁度、政府透明度 2、范围&#xff1a;290个地级市 3、数据说明&#xff1…

pandas--->CSV / JSON

csv CSV&#xff08;Comma-Separated Values&#xff0c;逗号分隔值&#xff0c;有时也称为字符分隔值&#xff0c;因为分隔字符也可以不是逗号&#xff09;&#xff0c;其文件以纯文本形式存储表格数据&#xff08;数字和文本&#xff09;。 CSV 是一种通用的、相对简单的文…

数据集笔记:T-drive 北京出租车轨迹数据

数据地址&#xff1a;T-Drive trajectory data sample - Microsoft Research 1 数据描述 此数据集包含了2008年2月2日至2月8日在北京期间10,357辆出租车的GPS轨迹。此数据集中的总点数约为1500万&#xff0c;轨迹的总距离达到了900万公里。图1显示了两个连续点之间的时间间隔和…

多数据源Pagehelper怎么配置

1.遇到的问题 若依增加多数据源&#xff0c;分页报错&#xff0c;查了下pagehelper也要修改配置。 官方配置&#xff1a; 官方文档&#xff1a;连接多数据源sqlServer使用分页的情况下报错&#xff0c;不使用分页时正常。 Issue #I3NJMR 若依/RuoYi - Gitee.com 我的配置&a…

构建基于Apache Mynewt的传感器网络应用程序:一个专为STM32 Blue Pill和nRF52设计的C语言教程

第一部分&#xff1a;引言和STM32 Blue Pill设置 1. 引言 在当今的智能设备和IoT时代&#xff0c;传感器网络在各种应用中发挥着关键作用&#xff0c;从家庭自动化到工业自动化等等。为了有效地部署这些网络&#xff0c;开发人员需要一个强大、灵活且轻量级的操作系统。Apache…

基于springboot+vue的校园资产管理系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

Java中的全局变量和局部变量

在Java中&#xff0c;全局变量和局部变量是两种不同作用域的变量。 全局变量&#xff08;成员变量&#xff09;&#xff1a; 在类中定义的变量称为成员变量&#xff0c;也叫全局变量。它们的作用域是整个类&#xff0c;在类的任何地方都可以被访问。如果没有显式地初始化&#…

贪心算法-会议室问题

1、题目描述 一些项目要占用一个会议室宣讲&#xff0c;会议室不能同时容纳两个项目。现在给你两个长度一样的数组&#xff0c;starts数组代码每个会议开始的时间&#xff0c;ends数组代表每个会议结束的时间。 在给你一个当前时间&#xff0c;请你求出当日可以利用会议室宣讲的…

睿趣科技:抖音开通蓝V怎么操作的

在抖音这个充满创意和活力的社交媒体平台上&#xff0c;蓝V认证成为了许多用户的梦想之一。蓝V认证不仅是身份的象征&#xff0c;还可以增加用户的影响力和可信度。但是&#xff0c;要在抖音上获得蓝V认证并不是一件容易的事情。下面&#xff0c;我们将介绍一些操作步骤&#x…

Nginx负载均衡详解

一、负载均衡介绍 1、负载均衡的定义 单体服务器解决不了并发量大的请求&#xff0c;所以&#xff0c;我们可以横向增加服务器的数量&#xff08;集群&#xff09;&#xff0c;然后将请求分发到各个服务器上&#xff0c;将原先请求集中到单个服务器上的情况改为将请求分发到多…

Linux 读写锁

读写锁是一把锁 /*读写锁的类型 pthread_rwlock_tpthread_rwlock_init(pthread_rwlock_t *restrict rwlock, const pthread_rwlockattr_t *restrict attr);int pthread_rwlock_destory(pthread_rwlock_t *rwlock);int pthread_rwlock_rdlock(pthread_rwlock_t *rwlock);int pt…

多台群晖实现按计划WOL网络自动唤醒数据冷备份

几年前买了2盘位的DS218&#xff0c;但是随着照片的增加已经不够用。年中购入了4盘位的群晖DS923、2块16T西数数企业级硬盘、1块2T intel企业级 SSD 1.什么是冷备份 冷备是离线备份&#xff0c;备份好的数据可以单独存取&#xff0c;定期冷备可以保证数据安全&#xff0c;适合…

设计模式篇---桥接模式

文章目录 概念结构实例总结 概念 桥接模式&#xff1a;将抽象部分与它的实现部分解耦&#xff0c;使得两者都能够独立变化。 毛笔和蜡笔都属于画笔&#xff0c;假设需要有大、中、小三种型号的画笔&#xff0c;绘画出12种颜色&#xff0c;蜡笔需要3*1236支&#xff0c;毛笔需要…