C++(1)

1. .C/.cpp  预编译   编译   汇编  链接  .exe

 

 

.c/.cpp

预编译.i                                     编译.s                               汇编.o                                 链接

1.#define                                    1.词法分析                  指令代码翻译成二进制            1.合并段和符号表

2/#include                                  2.语法分析                                                                   2.符号解析

3.#if  #endif #elif                        3.语义分析                                                                    3.分配地址和空间

4.删除注释                                 4.代码优化                                                                    4.符号的重定位

5.添加行号

6.保留#pragma

 

Linux          ELF

Window      PE

 

强弱符号

强符号:已经初始化的全局变量

弱符号:未初始化的全局变量

 

强弱符号的规则

1.两强   重定义

2.一强一弱  选强

3.两弱

 

 inter  x86 ==> Windows

AT&T   ==>Linux

 

mov,dword  ptr[ebp - 4],0ah;                add   eax,0ah  ==>  eax+=0a

lea,eax,[ebp - 4];                              sub  eax.0ah ==>  eax-=0a

push   0ah                                             call 压入下一行指令地址                   2.jmp 被调用方函数                                      

pop  eax ==> eax = pop();                    ret

eax  ebx ecx edx 

ebp  栈底指针寄存器

esp  栈顶指针寄存器

PC 下一行指令寄存器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值