汇编基础(1)

  1. 汇编语言与机器语言一一对应,每一条机器指令都有与之对应的汇编指令
  2. 汇编语言可以通过编译得到机器语言, 机器语言可以通过反汇编得到汇编语言.
  3. 高级语言可以通过编译得到汇编语言\机器语言, 但汇编语言\机器语言几乎不可能还原成高级语言.
    例如:

    最左边是代码(机器码)的内存地址, 中间是机器码, 最右边是汇编代码
    在这里插入图片描述
    两者的汇编代码和机器码相同, 所以如果有这样一段汇编代码, 是还原不出它的c语言代码的.
  4. 软件\程序的执行过程
    程序\软件都在硬盘上, 当程序要跑起来时, 要把它装载到内存中, 生成的可执行文件都是机器码(已经转变好0和1了), CPU在读写内存中的机器码, 控制计算机做一些事情.
    CPU内部有寄存器, 运算器(信息处理), 控制器(控制其他器件进行工作), 因为CPU访问寄存器对寄存器做一些运算比对内存做快.
    例如:
    int a = 3;
    inti b = a + 1;
    a 和 b 都存放在内存中, 但在做加法运算的时候, 并不是直接对内存这个东西进行加法的, 它会先把内存中的东西拿到寄存器, 然后再把寄存器中的东西加1, 然后在把加完的结果再送回到内存. 因为寄存器的访问速度更快, 所做的运算很多时候是直接对寄存器做的运算, 不是直接对内存做运算.
    即CPU会先将内存中的数据存储到寄存器中, 然后在对寄存器中的数据进行运算.
    上面的c语言代码转为汇编代码:
    mov [a], 3
    mov eax, [a]
    add eax, 1
    mov [b], eax
    注: 上面的不是严格的实际的汇编代码
代码的执行效率分析

(1)if-else和switch, 谁的效率高
CPU执行一条机器代码的时间是差不多的, 所以看汇编代码的行数就可以了.
存放机器码的内存地址是连续的

int no = 4;


mov 是赋值的意思
cmp 是比较的意思
sub 是减法的意思

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值