失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > C语言实现反汇编【微机原理】

C语言实现反汇编【微机原理】

时间:2021-08-06 11:05:47

相关推荐

C语言实现反汇编【微机原理】

C语言实现反汇编【微机原理】

0.参考文章1.配置gcc (dev c++中MinGW64)2.反汇编3.debug简单分析4.在c代码里内联汇编

0.参考文章

gcc不是内部或外部命令,也不是可运行的程序或批处理文件

使用 gcc 命令把C语言程序反汇编

如何在c代码里内联汇编

C语言汇编循环语句

GCC在C语言中内嵌汇编 asm

汇编语言 大小比较 理解 ja jna jg jle

一个C语言源程序是如何到一个可执行程序的

1.配置gcc (dev c++中MinGW64)

path系统变量

新建系统变量:LIBRARY_path

新建系统变量:C_INCLUDE_PATH

cmd测试

2.反汇编

1.c

#include<stdio.h>void main(){int cx=10;int ax=0;int bx=1;while(cx>0){ax+=bx;bx++;cx--;}//printf("%d",ax);//55}

1_at.s

.file"1.c".def__main;.scl2;.type32;.endef.text.globlmain.defmain;.scl2;.type32;.endef.seh_procmainmain:pushq%rbp.seh_pushreg%rbpmovq%rsp, %rbp.seh_setframe%rbp, 0subq$48, %rsp.seh_stackalloc48.seh_endprologuecall__mainmovl$10, -4(%rbp)movl$0, -8(%rbp)movl$1, -12(%rbp)jmp.L2.L3:movl-12(%rbp), %eaxaddl%eax, -8(%rbp)addl$1, -12(%rbp)subl$1, -4(%rbp).L2:cmpl$0, -4(%rbp)jg.L3addq$48, %rsppopq%rbpret.seh_endproc.ident"GCC: (tdm64-1) 4.9.2"

会发现和debug中结果差不多

3.debug简单分析

4.在c代码里内联汇编

一个简单的内联例子

#include<stdio.h>int a;int main(){printf("Test inline asm\n");//__asm("mov $789,%eax");//__asm("mov %eax,a");__asm("mov $789,%eax\n""mov %eax,a\n");printf("A is : %d\n",a);//789return 0;}

纯C语言

#include<stdio.h>void main(){int ax=0;int bx=1;int cx=10;while(bx<=cx){ax+=bx;bx++;}printf("%d",ax);//55printf("%d",bx);//11}

对应C语言内联汇编

#include<stdio.h>void main(){int ax=0,bx=1,cx=10;__asm("mov ax,%eax\n");__asm("mov bx,%ebx\n");__asm("next:\n""cmp cx,%ebx\n ""jg end\n""add %ebx,%eax\n""inc %ebx\n""jmp next\n""end:\n""mov %eax,ax""mov %ebx,bx");printf("%d",ax);//55printf("%d",bx);//11}

如果觉得《C语言实现反汇编【微机原理】》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。