逆向-beginners之循环memcpy

#include <stdio.h>

void my_memcpy(unsigned char * dst, unsigned char * src, size_t cnt)
{
    int i;

    for (i = 0; i < cnt; i++)
        dst[i] = src[i];
}

void main()
{

}

#if 0
/*
 * intel
 */
0000000000001129 <my_memcpy>:
    1129:    f3 0f 1e fa              endbr64 
    112d:    55                       push   %rbp
    112e:    48 89 e5                 mov    %rsp,%rbp
    1131:    48 89 7d e8              mov    %rdi,-0x18(%rbp)        // dst
    1135:    48 89 75 e0              mov    %rsi,-0x20(%rbp)        // src
    1139:    48 89 55 d8              mov    %rdx,-0x28(%rbp)        // cnt
    113d:    c7 45 fc 00 00 00 00     movl   $0x0,-0x4(%rbp)        // i
    1144:    eb 23                    jmp    1169 <my_memcpy+0x40>
    1146:    8b 45 fc                 mov    -0x4(%rbp),%eax        // i
    1149:    48 63 d0                 movslq %eax,%rdx
    114c:    48 8b 45 e0              mov    -0x20(%rbp),%rax        // src
    1150:    48 01 d0                 add    %rdx,%rax        // src+i
    1153:    8b 55 fc                 mov    -0x4(%rbp),%edx        // i
    1156:    48 63 ca                 movslq %edx,%rcx
    1159:    48 8b 55 e8              mov    -0x18(%rbp),%rdx        // dst
    115d:    48 01 ca                 add    %rcx,%rdx        // dst+i
    1160:    0f b6 00                 movzbl (%rax),%eax        // eax=src[i]
    1163:    88 02                    mov    %al,(%rdx)        // dst[i]=al=src[i]
    1165:    83 45 fc 01              addl   $0x1,-0x4(%rbp)
    1169:    8b 45 fc                 mov    -0x4(%rbp),%eax
    116c:    48 98                    cltq   
    116e:    48 39 45 d8              cmp    %rax,-0x28(%rbp)
    1172:    77 d2                    ja     1146 <my_memcpy+0x1d>
    1174:    90                       nop
    1175:    90                       nop
    1176:    5d                       pop    %rbp
    1177:    c3                       retq   

0000000000001178 <main>:
    1178:    f3 0f 1e fa              endbr64 
    117c:    55                       push   %rbp
    117d:    48 89 e5                 mov    %rsp,%rbp
    1180:    90                       nop
    1181:    5d                       pop    %rbp
    1182:    c3                       retq   
    1183:    66 2e 0f 1f 84 00 00     nopw   %cs:0x0(%rax,%rax,1)
    118a:    00 00 00 
    118d:    0f 1f 00                 nopl   (%rax)

/*
 * arm
 */
000000000040051c <my_memcpy>:
  40051c:    d100c3ff     sub    sp, sp, #0x30
  400520:    f9000fe0     str    x0, [sp, #24]
  400524:    f9000be1     str    x1, [sp, #16]
  400528:    f90007e2     str    x2, [sp, #8]
  40052c:    b9002fff     str    wzr, [sp, #44]
  400530:    1400000c     b    400560 <my_memcpy+0x44>
  400534:    b9802fe0     ldrsw    x0, [sp, #44]
  400538:    f9400be1     ldr    x1, [sp, #16]
  40053c:    8b000021     add    x1, x1, x0
  400540:    b9802fe0     ldrsw    x0, [sp, #44]
  400544:    f9400fe2     ldr    x2, [sp, #24]
  400548:    8b000040     add    x0, x2, x0
  40054c:    39400021     ldrb    w1, [x1]
  400550:    39000001     strb    w1, [x0]
  400554:    b9402fe0     ldr    w0, [sp, #44]
  400558:    11000400     add    w0, w0, #0x1
  40055c:    b9002fe0     str    w0, [sp, #44]
  400560:    b9802fe0     ldrsw    x0, [sp, #44]
  400564:    f94007e1     ldr    x1, [sp, #8]
  400568:    eb00003f     cmp    x1, x0
  40056c:    54fffe48     b.hi    400534 <my_memcpy+0x18>  // b.pmore
  400570:    d503201f     nop
  400574:    9100c3ff     add    sp, sp, #0x30
  400578:    d65f03c0     ret

000000000040057c <main>:
  40057c:    d503201f     nop
  400580:    d65f03c0     ret
  400584:    00000000     .inst    0x00000000 ; undefined


#endif
 

### 回答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、付费专栏及课程。

余额充值