版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
80X86汇编语言与C语言-汇编程序员眼中的系统结ObjectCodeProgramDataOSData
EIPx86-32RIPx86- 息
器 如何从C代码生C代 对应的X86-32汇编(AT&T汇编格式intsum(intx,int{intt=x+y;}命令行:gcc–O2S生成汇编文件
movl%esp,%ebpmovl12(%ebp),%eaxaddl8(%ebp),%eaxmovl%ebp,%esppopl%ebp汇编语言数据格inttintt=两个整数(32位)相addladdl两个32位整数相类似于表达式x+=
“l”intintinteax+=操作数结果存3-字节指 0345movlSource,常见指可以被1,2或4个字节来表寄存器:8
类似的C语言表movl temp=
movl$-147,(%eax)*p=-
movl%eax,%edx temp2=temp1;movl%eax,(%edx) *p=temp;movl temp=间接寻 寄存器R指定内存地
movl 寄存器R指定内存起始地常数D给出偏移movlvoidvoidswap(int*xp,int{intt0=*xp;intt1=*xp=*yp=}
pushlmovl%esp,%ebppushl%ebxmovl12(%ebp),%ecxmovl8(%ebp),%edxmovl(%ecx),%eaxmovl(%edx),%ebxmovl%eax,(%edx)movl%ebx,(%ecx)
movl-4(%ebp),%ebxmovl%ebp,%esppopl%ebp
pushl{swap(int{swap(intt0=*xp;t1==}=movl12(%ebp),%ecxmovl8(%ebp),%edxmovl(%ecx),%eaxmovl(%edx),%ebxmovl%eax,(%edx)movl%ebx,(%ecx)movl-4(%ebp),%ebxmovl%ebp,%esppopl%ebp
voidswap(int*xp,int{intt0 intt1=*xp= *yp= }4•••栈Rtn0Old -4Old movl12(%ebp),%ecx#ecx= movl #edx= movl #eax=*yp movl #ebx=*xpmovl%eax,(%edx) #*xp=eaxmovl #*yp= 4
Rtn
movl12(%ebp),%ecx #ecx=ypmovl #edx=
movl(%ecx),%eax#eax=*yp(t1)movl(%edx),%ebx#ebx=*xp(t0)movl%eax,(%edx)#*xp=eaxmovl%ebx,(%ecx)#*yp= 4
Rtn
movl12(%ebp),%ecx #ecx=ypmovl #edx=
movl(%ecx),%eax#eax=*yp(t1)movl(%edx),%ebx#ebx=*xp(t0)movl%eax,(%edx)#*xp=eaxmovl%ebx,(%ecx)#*yp=
4
Rtn
movl12(%ebp),%ecx #ecx=ypmovl #edx=
movl(%ecx),%eax#eax=*yp(t1)movl(%edx),%ebx#ebx=*xp(t0)movl%eax,(%edx)#*xp=eaxmovl%ebx,(%ecx)#*yp=
4
Rtn
movl12(%ebp),%ecx #ecx=ypmovl #edx=
movl(%ecx),%eax#eax=*yp(t1)movl(%edx),%ebx#ebx=*xp(t0)movl%eax,(%edx)#*xp=eaxmovl%ebx,(%ecx)#*yp= 4
Rtn
movl12(%ebp),%ecx #ecx=ypmovl #edx=
movl(%ecx),%eax#eax=*yp(t1)movl(%edx),%ebx#ebx=*xp(t0)movl%eax,(%edx)#*xp=eaxmovl%ebx,(%ecx)#*yp= 4
Rtn
movl12(%ebp),%ecx #ecx=ypmovl #edx=
movl(%ecx),%eax#eax=*yp(t1)movl(%edx),%ebx#ebx=*xp(t0)movl%eax,(%edx)#*xp=eaxmovl%ebx,(%ecx)#*yp= 4
Rtn
movl12(%ebp),%ecx #ecx=ypmovl #edx=
movl(%ecx),%eax#eax=*yp(t1)movl(%edx),%ebx#ebx=*xp(t0)movl%eax,(%edx)#*xp=eaxmovl%ebx,(%ecx)#*yp= Mem[Reg[Rb]+S*Reg[Ri]+ 常量(地址偏移量 基址寄存器:8 索引寄存器: 一般%ebp 比例因1,24or
0xf000+0xf000+0xf000+2*0xf000+SrcE.g.,translationofp=进行xk*yk=1,2,4,or addl=+subl=-imull=*sall=与shll等sarl=shrl=Src逻辑右xorl=^andl=&orl=| incl=+1decl=-1negl=-notl=~int(intx,inty,int{intt1=x+y;intt2=z+t1;intt3=x+4;intt4=y*48;intt5=t3+intrval=t2*t5;returnrval;}
pushl%ebpmovl%esp,%ebpmovl8(%ebp),%eaxmovl12(%ebp),%edxsall$4,%edxaddl16(%ebp),%ecxmovl%ebp,%esppopl%ebp
intint(intx,int{intt1=x+y;intt2=z+t1;intt3=x+4;intt4=y*48;intt5=t3+t4;intrval=t2*t5;returnrval;}84#=x#=y#=#=#=#=#eax=4+t4+x(t5)#eax=t5*t2(rval)
•••z•••zyxRtnOldint(intx,inty,int{intt1=x+y;intt2=z+t1;intt3=x+4;intt4=y*48;intt5=t3+intrval=t2*t5;returnrval;
840
••••••zyxRtnOld}#=x#=y#=#=#=#=leal4(%edx,%eax),%eax
#eax=#eax=t5*t2int(intx,inty,int{intt1=x+y;intt2=z+t1;intt3=x+4;intt4=y*48;intt5=t3+intrval=t2*t5;returnrval;
840
••••••zyxRtnOld}#=x#=y#=#=#=#=leal4(%edx,%eax),%eax
#eax=#eax=t5*t2int(intx,inty,int{intt1=x+y;intt2=z+t1;intt3=x+4;intt4=y*48;intt5=t3+intrval=t2*t5;returnrval;
840
••••••zyxRtnOld}#=x#=y#=#=#=#=leal4(%edx,%eax),%eax
#eax=#eax=t5*t2int(intx,inty,int{intt1=x+y;intt2=z+t1;intt3=x+4;intt4=y*48;intt5=t3+intrval=t2*t5;returnrval;
840
••••••zyxRtnOld}#=x#=y#=#=#=#=leal4(%edx,%eax),%eax
#eax=#eax=t5*t2int(intx,inty,int{intt1=x+y;intt2=z+t1;intt3=x+4;intt4=y*48;intt5=t3+intrval=t2*t5;returnrval;
840
••••••zyxRtnOld}#=x#=y#=#=#=#=leal4(%edx,%eax),%eax
#eax=#eax=t5*t2intintlogical(intx,int{intt1=intt2=t1>>intmask=(1<<13)-7;intrval=t2&mask;returnrval;}movlmovl8(%ebp),%eaxxorl12(%ebp),%eaxsarl$17,%eaxandlmovlpopl
=x===t2&intintlogical(intx,int{intt1=intt2=t1>>intmask=(1<<13)-7;intrval=t2&mask;returnrval;}movlmovl8(%ebp),%eaxxorl12(%ebp),%eaxsarl$17,%eaxandlmovlpopl
=x==andl eax=t2&intintlogical(intx,int{intt1=intt2=t1>>intmask=(1<<13)-7;intrval=t2&mask;returnrval;}movlmovl8(%ebp),%eaxxorl12(%ebp),%eaxsarl$17,%eaxandlmovlpopl
=x==andl eax=t2&intintlogical(intx,int{intt1=intt2=t1>>intmask=(1<<13)-7;intrval=t2&mask;returnrval;}movlmovl8(%ebp),%eaxxorl12(%ebp),%eaxsarl$17,%eaxandlmovlpopl213213=8192,213–7=
=x= =t1>>17=t2&8185SizesofCObjects(inCData x86-444444long448111222444888long8char448»Oranyotherx86-64的通用寄存扩展现有的,并增加了8个新%ebp/%rbp不再 寄存X86-32下的
pushl{swap(int{swap(intt0=*xp;t1==}=movl12(%ebp),%ecxmovl8(%ebp),%edxmovl(%ecx),%eaxmovl(%edx),%ebxmovl%eax,(%edx)movl%ebx,(%ecx)movl-4(%ebp),%ebxmovl%ebp,%esppopl%ebp
voidswap(intvoidswap(int*xp,int{intt0=*xp;intt1=*xp=*yp=}
(%rdi),%edx(%rsi),%eax,%edx,不同»First(xp)in%rdi,second(yp)in»64-bit作的数据仍是32
右放入寄存器:rdi,rsi,rdx,rcxr8r9。当参7个以上6个传送方式不变,"右向左放入X86-32下longint类型的voidvoid(longint*xp,longint{longintt0=longintt1=*xp=*yp=
(%rdi),%rdx(%rsi),%rax,%rdx,}}作的数据是64以及movq指令 表示“4X86指令的特立即数寄存器内存数Rb+S*R
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山西省河曲实验中学2026年初三下学期冲刺(四)数学试题含解析
- 2026届江西省九江市九江有色金属冶炼厂职工子弟校初三4月模拟训练英语试题含解析
- 2026届广东省肇庆第四中学初三下学期期中调研英语试题含解析
- 2026年湖北省荆州松滋市重点中学初三第三次模拟考试英语试题试卷含解析
- 2026年青岛市重点达标名校初三下学期模拟(一)测试英语试题含解析
- 银行信贷守信声明书6篇
- 大学生就业准备与职业规划指导书
- 智能穿戴产品品控承诺书(5篇)
- 跨部门协作平台使用及培训教程
- 年度营销会议准备函(6篇范文)
- 武汉大学分析化学教案第3章分析化学的误差与数据处理课件
- MT 425-1995隔绝式化学氧自救器
- 2023年辽宁大连中远海运川崎船舶工程有限公司招聘笔试题库及答案解析
- GB/T 18046-2008用于水泥和混凝土中的粒化高炉矿渣粉
- 临床检验基础各章节练习题及思考题
- 托幼机构卫生保健人员测试卷附答案
- 公司软件开发技术能力说明
- 钢结构工程计量课件
- 一例慢阻肺病人护理个案
- 教师口语教程教学课件汇总全套电子教案(完整版)
- 中国文化概论课件04
评论
0/150
提交评论