首页 > 编程语言 >反汇编训练2

反汇编训练2

时间:2023-04-06 16:22:48浏览次数:39  
标签:存储 训练 int eax 操作码 反汇编 ebx %%

以下是一个汇编程序,请转换为等效的C++代码:

```assembly
section .text
global _start

_start:
mov eax, 2 ; 操作码: 0xB8, 参数: 0x02
mov ebx, 3 ; 操作码: 0xBB, 参数: 0x03
add eax, ebx ; 操作码: 0x01, 参数: 0xC3
mov ecx, eax ; 操作码: 0x89, 参数: 0xD1
mov eax, 1 ; 操作码: 0xB8, 参数: 0x01
int 0x80 ; 调用系统调用
ret

```

转换为C++代码:

```cpp
int main() {
int a = 2;
int b = 3;
int c = a + b;
int fd = 1; // file descriptor 1 for stdout
asm volatile(
"movl %0, %%eax\n\t" // 将a的值存储到eax寄存器中
"movl %1, %%ebx\n\t" // 将b的值存储到ebx寄存器中
"addl %%ebx, %%eax\n\t" // 将eax和ebx的值相加,结果存储到eax中
"movl %%eax, %2\n\t" // 将eax的值存储到c中
"movl %3, %%eax\n\t" // 将1存储到eax中,以表示系统调用1
"int $0x80\n\t" // 发起系统调用
: "=r" (c) // 输出操作数
: "r" (a), "r" (b), "r" (fd) // 输入操作数
: "%eax", "%ebx" // 定义使用的寄存器
);
return 0;
}
```

这个程序通过将2和3存储到寄存器中,相加得到5,然后将结果5存储到变量c中。然后,它使用系统调用1向stdout打印c的值。

以上是一个简单的示例,实际上,将英特尔汇编转换为C++代码需要更加深入的汇编知识和编译器理解。如果你刚刚开始学习英特尔汇编,请先熟悉操作码和数值参数之间的关系,然后再转换代码。

标签:存储,训练,int,eax,操作码,反汇编,ebx,%%
From: https://www.cnblogs.com/creaker/p/17293152.html

相关文章

  • Leetcode(剑指offer专项训练)——DP专项(7)
    矩阵中的距离题目:给定一个由0和1组成的矩阵mat ,请输出一个大小相同的矩阵,其中每一个格子是mat中对应位置元素到最近的0的距离。两个相邻元素间的距离为1。链接TLS思路题解暴力DFS的结果是超时......
  • yolov5训练自己的数据
    前一篇文章写了如何的安装yolo5。基于上面的一章,记录下用yolo5来训练自己的数据。split_train_val.pyimportosimportrandomtrainval_percent=0.1train_percent=0.9xmlfilepath='/Users/Tony/IdeaProjects/yolov5/data/mydata/xml'txtsavepath='/Users/Tony/IdeaP......
  • 一维CNN,二维CNN以及三维CNN的训练模型matlab仿真
    1.算法描述卷积神经网络(ConvolutionalNeuralNetworks,CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(FeedforwardNeuralNetworks),是深度学习(deeplearning)的代表算法之一。卷积神经网络具有表征学习(representationlearning)能力,能够按其阶层结构对输入信息进行平移不变......
  • 使用 diffusers 训练你自己的 ControlNet
    简介ControlNet这个神经网络模型使得用户可以通过施加额外条件,细粒度地控制扩散模型的生成过程。这一技术最初由AddingConditionalControltoText-to-ImageDiffusionModels这篇论文提出,并很快地风靡了扩散模型的开源社区。作者开源了8个不同的模型,使得用户可以用8种......
  • 算法训练——剑指offer(动态规划算法)摘要
    摘要一、动态规划原理与解题方法二、动态规划算法练习题目2.1跳台阶问题package动态规划算法;importorg.junit.Test;/***@ClassnameJZ69跳台阶问题*@DescriptionTODO*@Date2022/2/1118:54*@Createdbyxjl*/publicclassJZ69跳台阶问题{/**......
  • 基于mnist手写数字数据库的深度学习网络训练和数字识别matlab仿真
    1.算法描述        MNIST数据集(MixedNationalInstituteofStandardsandTechnologydatabase)是美国国家标准与技术研究院收集整理的大型手写数字数据库,该数据集包含60000 个于训练的样本和10000 个于测试的样本,图像是固定⼤小(28x28像素),每个像素的值为......
  • 【ACM算法竞赛日常训练】DAY10题解与分析【月月给华华出题】【华华给月月出题】| 筛法
    DAY10共2题:月月给华华出题华华给月月出题难度较大。......
  • 算法训练——剑指offer(模拟算法)
    摘要一、模拟算法原理与解题方法二、模拟算法练习题目2.1顺时针打印矩阵顺时针打印矩阵_牛客题霸_牛客网解题思路:递归的思想和非递归的思想相差不大,递归是首先打印最外层的元素,将内层的矩阵作为一个全新的矩阵进行递归。对于每层,从左上方开始以顺时针的顺序遍历所有元素。假设当......
  • 算法训练——剑指offer(排序算法)摘要
    摘要一、排序算法原理与解题方法二、排序算法练习题目2.1数组中重复的数字数组中重复的数字_牛客题霸_牛客网package排序算法;importjava.util.ArrayList;/***@ClassnameJZ3数组中重复的数字*@DescriptionTODO*@Date2022/2/49:20*@Createdbyxjl*/publi......
  • 2019牛客暑期多校训练营(第四场) K numbers
    链接:https://ac.nowcoder.com/acm/contest/884/K?&headNav=acm&headNav=acm来源:牛客网 题目描述300iqlovesnumberswhoaremultipleof300.Onedayhegotastringconsistedofnumbers.Hewantstoknowhowmanysubstringsinthestringaremultiplesof300whe......