clang 反汇编

在这里插入图片描述

原程序文件

#include <stdio.h>
int main(void)
{
	int a;
	int b;
	int c;
	a = 10;
	b = 20;
	c = a + b;
	printf("%d\n", c);
	getchar();
	return 0;
}

使用反汇编观察

#include <stdio.h>
int main(void)
{
01321810  push        ebp  
01321811  mov         ebp,esp  
01321813  sub         esp,0E4h  
01321819  push        ebx  
0132181A  push        esi  
0132181B  push        edi  
0132181C  lea         edi,[ebp-0E4h]  
01321822  mov         ecx,39h  
01321827  mov         eax,0CCCCCCCCh  
0132182C  rep stos    dword ptr es:[edi]  
0132182E  mov         ecx,offset _F2A6C2CF_test@cpp (0132C003h)  
01321833  call        @__CheckForDebuggerJustMyCode@4 (01321212h)  
	int a;
	int b;
	int c;
	a = 10;
01321838  mov         dword ptr [a],0Ah  //0A是十六进制,转为十进制是10,就是将10赋值给a
	b = 20;
0132183F  mov         dword ptr [b],14h  
	c = a + b;
01321846  mov         eax,dword ptr [a]  //eax是寄存器,将a移动到寄存器中
01321849  add         eax,dword ptr [b]  //将b的值加到寄存其中
0132184C  mov         dword ptr [c],eax  //将寄存器的值移动到c中
	printf("%d\n", c);
0132184F  mov         eax,dword ptr [c]  
01321852  push        eax  
01321853  push        offset string "%d\n" (01327B30h)  
01321858  call        _printf (0132104Bh)  
0132185D  add         esp,8  
	getchar();
01321860  mov         esi,esp  
01321862  call        dword ptr [__imp__getchar (0132B16Ch)]  
01321868  cmp         esi,esp  
0132186A  call        __RTC_CheckEsp (0132121Ch)  
	return 0;
0132186F  xor         eax,eax  
}


在clang中添加汇编语言__asm

#include <stdio.h>
#include <Windows.h>

int main02(void)
{
	int a;
	int b;
	int c;
	//a = 10;
	//b = 20;
	//c = a + b;
	//汇编代码
	__asm
	{
		mov a, 3
		mov b, 4
		mov eax, a
		add eax, b
		mov c, eax
	}
	printf("a=%d\n", a);
	printf("b=%d\n", b);
	printf("c=%d\n", c);
	getchar();
	//WinExec
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值