逆向-beginners之C++ string字符串连接

#include <stdio.h>
#include <string>

int main()
{
    std::string s1 = "Hello, ";
    std::string s2 = "world!\n";
    std::string s3 = s1 + s2;

    printf("%s\n", s3.c_str());
}

#if 0
/*
 * intel
 */
0000000000001269 <main>:
    1269:    f3 0f 1e fa              endbr64
    126d:    55                       push   %rbp
    126e:    48 89 e5                 mov    %rsp,%rbp
    1271:    53                       push   %rbx
    1272:    48 81 ec 88 00 00 00     sub    $0x88,%rsp
    1279:    64 48 8b 04 25 28 00     mov    %fs:0x28,%rax
    1280:    00 00
    1282:    48 89 45 e8              mov    %rax,-0x18(%rbp)
    1286:    31 c0                    xor    %eax,%eax
    1288:    48 8d 85 7f ff ff ff     lea    -0x81(%rbp),%rax
    128f:    48 89 c7                 mov    %rax,%rdi
    1292:    e8 c9 fe ff ff           callq  1160 <_ZNSaIcEC1Ev@plt>
    1297:    48 8d 95 7f ff ff ff     lea    -0x81(%rbp),%rdx
    129e:    48 8d 45 80              lea    -0x80(%rbp),%rax
    12a2:    48 8d 35 5c 0d 00 00     lea    0xd5c(%rip),%rsi        # 2005 <_ZStL19piecewise_construct+0x1>
    12a9:    48 89 c7                 mov    %rax,%rdi
    12ac:    e8 7f fe ff ff           callq  1130 <_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EPKcRKS3_@plt>
    12b1:    48 8d 85 7f ff ff ff     lea    -0x81(%rbp),%rax
    12b8:    48 89 c7                 mov    %rax,%rdi
    12bb:    e8 50 fe ff ff           callq  1110 <_ZNSaIcED1Ev@plt>
    12c0:    48 8d 85 7f ff ff ff     lea    -0x81(%rbp),%rax
    12c7:    48 89 c7                 mov    %rax,%rdi
    12ca:    e8 91 fe ff ff           callq  1160 <_ZNSaIcEC1Ev@plt>
    12cf:    48 8d 95 7f ff ff ff     lea    -0x81(%rbp),%rdx
    12d6:    48 8d 45 a0              lea    -0x60(%rbp),%rax
    12da:    48 8d 35 2c 0d 00 00     lea    0xd2c(%rip),%rsi        # 200d <_ZStL19piecewise_construct+0x9>
    12e1:    48 89 c7                 mov    %rax,%rdi
    12e4:    e8 47 fe ff ff           callq  1130 <_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EPKcRKS3_@plt>
    12e9:    48 8d 85 7f ff ff ff     lea    -0x81(%rbp),%rax
    12f0:    48 89 c7                 mov    %rax,%rdi
    12f3:    e8 18 fe ff ff           callq  1110 <_ZNSaIcED1Ev@plt>
    12f8:    48 8d 45 c0              lea    -0x40(%rbp),%rax
    12fc:    48 8d 55 a0              lea    -0x60(%rbp),%rdx
    1300:    48 8d 4d 80              lea    -0x80(%rbp),%rcx
    1304:    48 89 ce                 mov    %rcx,%rsi
    1307:    48 89 c7                 mov    %rax,%rdi
    130a:    e8 d5 00 00 00           callq  13e4 <_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_SA_>
    130f:    48 8d 45 c0              lea    -0x40(%rbp),%rax
    1313:    48 89 c7                 mov    %rax,%rdi
    1316:    e8 c5 fd ff ff           callq  10e0 <_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv@plt>
    131b:    48 89 c7                 mov    %rax,%rdi
    131e:    e8 1d fe ff ff           callq  1140 <puts@plt>
    1323:    48 8d 45 c0              lea    -0x40(%rbp),%rax
    1327:    48 89 c7                 mov    %rax,%rdi
    132a:    e8 d1 fd ff ff           callq  1100 <_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev@plt>
    132f:    48 8d 45 a0              lea    -0x60(%rbp),%rax
    1333:    48 89 c7                 mov    %rax,%rdi
    1336:    e8 c5 fd ff ff           callq  1100 <_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev@plt>
    133b:    48 8d 45 80              lea    -0x80(%rbp),%rax
    133f:    48 89 c7                 mov    %rax,%rdi
    1342:    e8 b9 fd ff ff           callq  1100 <_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev@plt>
    1347:    b8 00 00 00 00           mov    $0x0,%eax
    134c:    48 8b 4d e8              mov    -0x18(%rbp),%rcx
    1350:    64 48 33 0c 25 28 00     xor    %fs:0x28,%rcx
    1357:    00 00
    1359:    74 7f                    je     13da <main+0x171>
    135b:    eb 78                    jmp    13d5 <main+0x16c>
    135d:    f3 0f 1e fa              endbr64
    1361:    48 89 c3                 mov    %rax,%rbx
    1364:    48 8d 85 7f ff ff ff     lea    -0x81(%rbp),%rax
    136b:    48 89 c7                 mov    %rax,%rdi
    136e:    e8 9d fd ff ff           callq  1110 <_ZNSaIcED1Ev@plt>
    1373:    48 89 d8                 mov    %rbx,%rax
    1376:    48 89 c7                 mov    %rax,%rdi
    1379:    e8 d2 fd ff ff           callq  1150 <_Unwind_Resume@plt>
    137e:    f3 0f 1e fa              endbr64
    1382:    48 89 c3                 mov    %rax,%rbx
    1385:    48 8d 85 7f ff ff ff     lea    -0x81(%rbp),%rax
    138c:    48 89 c7                 mov    %rax,%rdi
    138f:    e8 7c fd ff ff           callq  1110 <_ZNSaIcED1Ev@plt>
    1394:    eb 28                    jmp    13be <main+0x155>
    1396:    f3 0f 1e fa              endbr64
    139a:    48 89 c3                 mov    %rax,%rbx
    139d:    48 8d 45 c0              lea    -0x40(%rbp),%rax
    13a1:    48 89 c7                 mov    %rax,%rdi
    13a4:    e8 57 fd ff ff           callq  1100 <_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev@plt>
    13a9:    eb 07                    jmp    13b2 <main+0x149>
    13ab:    f3 0f 1e fa              endbr64
    13af:    48 89 c3                 mov    %rax,%rbx
    13b2:    48 8d 45 a0              lea    -0x60(%rbp),%rax
    13b6:    48 89 c7                 mov    %rax,%rdi
    13b9:    e8 42 fd ff ff           callq  1100 <_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev@plt>
    13be:    48 8d 45 80              lea    -0x80(%rbp),%rax
    13c2:    48 89 c7                 mov    %rax,%rdi
    13c5:    e8 36 fd ff ff           callq  1100 <_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev@plt>
    13ca:    48 89 d8                 mov    %rbx,%rax
    13cd:    48 89 c7                 mov    %rax,%rdi
    13d0:    e8 7b fd ff ff           callq  1150 <_Unwind_Resume@plt>
    13d5:    e8 46 fd ff ff           callq  1120 <__stack_chk_fail@plt>
    13da:    48 81 c4 88 00 00 00     add    $0x88,%rsp
    13e1:    5b                       pop    %rbx
    13e2:    5d                       pop    %rbp
    13e3:    c3                       retq   

/*
 * arm
 */
0000000000400b1c <main>:
  400b1c:    a9b77bfd     stp    x29, x30, [sp, #-144]!
  400b20:    910003fd     mov    x29, sp
  400b24:    f9000bf3     str    x19, [sp, #16]
  400b28:    910203a0     add    x0, x29, #0x80
  400b2c:    97ffffb1     bl    4009f0 <_ZNSaIcEC1Ev@plt>
  400b30:    910203a2     add    x2, x29, #0x80
  400b34:    90000000     adrp    x0, 400000 <_init-0x910>
  400b38:    91348001     add    x1, x0, #0xd20
  400b3c:    910183a0     add    x0, x29, #0x60
  400b40:    97ffffa8     bl    4009e0 <_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EPKcRKS3_@plt>
  400b44:    910203a0     add    x0, x29, #0x80
  400b48:    97ffff96     bl    4009a0 <_ZNSaIcED1Ev@plt>
  400b4c:    910223a0     add    x0, x29, #0x88
  400b50:    97ffffa8     bl    4009f0 <_ZNSaIcEC1Ev@plt>
  400b54:    910223a2     add    x2, x29, #0x88
  400b58:    90000000     adrp    x0, 400000 <_init-0x910>
  400b5c:    9134a001     add    x1, x0, #0xd28
  400b60:    910103a0     add    x0, x29, #0x40
  400b64:    97ffff9f     bl    4009e0 <_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EPKcRKS3_@plt>
  400b68:    910223a0     add    x0, x29, #0x88
  400b6c:    97ffff8d     bl    4009a0 <_ZNSaIcED1Ev@plt>
  400b70:    910103a1     add    x1, x29, #0x40
  400b74:    910183a0     add    x0, x29, #0x60
  400b78:    910083a2     add    x2, x29, #0x20
  400b7c:    aa0203e8     mov    x8, x2
  400b80:    94000023     bl    400c0c <_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_SA_>
  400b84:    910083a0     add    x0, x29, #0x20
  400b88:    97ffff8a     bl    4009b0 <_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv@plt>
  400b8c:    97ffff8d     bl    4009c0 <puts@plt>
  400b90:    910083a0     add    x0, x29, #0x20
  400b94:    97ffff77     bl    400970 <_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev@plt>
  400b98:    910103a0     add    x0, x29, #0x40
  400b9c:    97ffff75     bl    400970 <_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev@plt>
  400ba0:    910183a0     add    x0, x29, #0x60
  400ba4:    97ffff73     bl    400970 <_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev@plt>
  400ba8:    52800000     mov    w0, #0x0                       // #0
  400bac:    14000015     b    400c00 <main+0xe4>
  400bb0:    aa0003f3     mov    x19, x0
  400bb4:    910203a0     add    x0, x29, #0x80
  400bb8:    97ffff7a     bl    4009a0 <_ZNSaIcED1Ev@plt>
  400bbc:    aa1303e0     mov    x0, x19
  400bc0:    97ffff94     bl    400a10 <_Unwind_Resume@plt>
  400bc4:    aa0003f3     mov    x19, x0
  400bc8:    910223a0     add    x0, x29, #0x88
  400bcc:    97ffff75     bl    4009a0 <_ZNSaIcED1Ev@plt>
  400bd0:    14000008     b    400bf0 <main+0xd4>
  400bd4:    aa0003f3     mov    x19, x0
  400bd8:    910083a0     add    x0, x29, #0x20
  400bdc:    97ffff65     bl    400970 <_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev@plt>
  400be0:    14000002     b    400be8 <main+0xcc>
  400be4:    aa0003f3     mov    x19, x0
  400be8:    910103a0     add    x0, x29, #0x40
  400bec:    97ffff61     bl    400970 <_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev@plt>
  400bf0:    910183a0     add    x0, x29, #0x60
  400bf4:    97ffff5f     bl    400970 <_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev@plt>
  400bf8:    aa1303e0     mov    x0, x19
  400bfc:    97ffff85     bl    400a10 <_Unwind_Resume@plt>
  400c00:    f9400bf3     ldr    x19, [sp, #16]
  400c04:    a8c97bfd     ldp    x29, x30, [sp], #144
  400c08:    d65f03c0     ret

0000000000400c0c <_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_SA_>:
  400c0c:    a9bd7bfd     stp    x29, x30, [sp, #-48]!
  400c10:    910003fd     mov    x29, sp
  400c14:    a90153f3     stp    x19, x20, [sp, #16]
  400c18:    aa0803f3     mov    x19, x8
  400c1c:    f90017a0     str    x0, [x29, #40]
  400c20:    f90013a1     str    x1, [x29, #32]
  400c24:    f94017a1     ldr    x1, [x29, #40]
  400c28:    aa1303e0     mov    x0, x19
  400c2c:    97ffff69     bl    4009d0 <_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_@plt>
  400c30:    f94013a1     ldr    x1, [x29, #32]
  400c34:    aa1303e0     mov    x0, x19
  400c38:    97ffff56     bl    400990 <_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_@plt>
  400c3c:    14000006     b    400c54 <_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_SA_+0x48>
  400c40:    aa0003f4     mov    x20, x0
  400c44:    aa1303e0     mov    x0, x19
  400c48:    97ffff4a     bl    400970 <_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev@plt>
  400c4c:    aa1403e0     mov    x0, x20
  400c50:    97ffff70     bl    400a10 <_Unwind_Resume@plt>
  400c54:    aa1303e0     mov    x0, x19
  400c58:    a94153f3     ldp    x19, x20, [sp, #16]
  400c5c:    a8c37bfd     ldp    x29, x30, [sp], #48
  400c60:    d65f03c0     ret
  400c64:    00000000     .inst    0x00000000 ; undefined


#endif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
### 回答1: 很抱歉,我是一名AI语言模型,无法进行安装操作。但是,我可以提供一些安装ROS Academy for Beginners的指导: 1. 首先,确保你的计算机已经安装了ROS(Robot Operating System)。 2. 在终端中输入以下命令,下载ROS Academy for Beginners: ``` git clone https://github.com/qboticslabs/ros-academy-for-beginners.git ``` 3. 进入下载的文件夹: ``` cd ros-academy-for-beginners ``` 4. 运行安装脚本: ``` ./install.sh ``` 5. 安装完成后,你可以在终端中输入以下命令,启动ROS Academy for Beginners: ``` roslaunch academy academy.launch ``` 希望这些指导能够帮助你安装ROS Academy for Beginners。如果你遇到了任何问题,可以在ROS社区中寻求帮助。 ### 回答2: 首先,安装ROS的前提是已经安装好了Ubuntu操作系统,推荐使用Ubuntu 18.04。可以从Ubuntu的官网上下载系统镜像并且安装。 其次,在安装ROS之前,需要先添加ROS的软件源,这里以Melodic版本为例。打开终端,输入以下命令,添加ROS的软件源: ``` sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' ``` 由于ROS的安装需要与ubuntu操作系统的软件进行整合,为了确保最佳匹配,需要先运行以下命令进行更新: ``` sudo apt update sudo apt upgrade ``` 然后是ROS的安装,运行以下命令: ``` sudo apt install ros-melodic-desktop-full ``` 该命令会安装ROS桌面完整版,其中包含许多常用的软件包和工具。安装完成后,可以通过以下命令检查ROS的版本: ``` rosversion -d ``` 接下来,还需配置ROS环境变量。在终端中输入: ``` echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc source ~/.bashrc ``` 安装ROS的最后一步是安装ROS初始工作区(catkin工作区)。打开终端,输入以下命令: ``` mkdir -p ~/catkin_ws/src cd ~/catkin_ws/ catkin_make ``` 这个命令创建一个名为catkin_ws的文件夹,并在其中创建一个src文件夹,用于存放ROS软件包源代码。 最后,我们可以安装ros-academy-for-beginners这个包,这个包可以用于学习ROS的基础知识,包括ROS的概念、练习和示例等等。在终端输入以下命令: ``` cd ~/catkin_ws/src git clone https://github.com/OTL/ros-academy-for-beginners.git cd ~/catkin_ws catkin_make ``` 至此,ros-academy-for-beginners的安装就完成了。如果想要使用该软件包内的示例和练习程序,可以查看ros-academy-for-beginners中的README文件,然后通过以下命令运行: ``` roslaunch ros_academy_publisher publisher.launch ``` ### 回答3: ROS(机器人操作系统)是一种流行的开源软件框架,它可以帮助开发人员为机器人软件构建底层、中间层、以及可视化的应用程序。ROS Academy for Beginners是一个为初学者提供ROS学习和实践的平台,这个平台包含了一系列的教程,如基础知识、机器人操作、感知和导航等。 在安装ROS Academy for Beginners之前,首先需要准备以下工具: 1. 一个ROS Kinetic(或更高版本)的Ubuntu操作系统。 2. 一个支持VirtualBox或VMware的虚拟机管理软件。 3. 一个ROS学习环境的Ubuntu虚拟机镜像文件。 下面是安装ROS Academy for Beginners的步骤: 1. 在VirtualBox(或其他虚拟机软件)中创建一台新的虚拟机。请确保选择Ubuntu x64的版本。 2. 启动Ubuntu虚拟机,并使用管理员权限运行Terminal。 3. 输入以下命令,添加ROS Kinetic的存储库以及密钥: $ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' $ sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116 4. 更新存储库并安装ROS Kinetic Desktop Full: $ sudo apt-get update $ sudo apt-get install ros-kinetic-desktop-full 5. 安装ROS依赖项: $ sudo apt-get install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential 6. 初始化rosdep: $ sudo rosdep init $ rosdep update 7. 设置ROS环境变量: $ echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc $ source ~/.bashrc 8. 下载ROS Academy for Beginners虚拟机镜像: $ wget https://s3-us-west-2.amazonaws.com/ros-academy/ROS-Academy-For-Beginners.ova 9. 启动VirtualBox软件,选择“File” -> “Import Appliance”,并选择已下载的ROS Academy for Beginners虚拟机镜像文件。 10. 等待虚拟机导入完成后,启动ROS Academy for Beginners虚拟机,并按照教程开始学习ROS! 希望这些步骤可以帮助您安装ROS Academy for Beginners。如果您在安装过程中遇到任何问题,请参考ROS官方文档或社区论坛,寻求帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值