美文网首页
从C++探究汇编.04

从C++探究汇编.04

作者: Stago | 来源:发表于2021-11-02 09:54 被阅读0次

[地址值]

  • 中括号[ ]里面放的都是内存地址
  • word是2字节,dword是4字节,qword是8个字节

lea

lea dest, [地址值]
赋值地址值 给dest (load effect address) (装载地址值)
类似于 dest = 地址值

  • 对比 mov

mov dest, src
mov 是对应地址取出的内容赋值,
类似于dest = src

mov move的简称

lea dest, [地址值]

lea eax, [1122H]
// eax = 1122H 
// mov eax, 1122H

mov  eax, dword ptr[1122H]

call

call 函数地址

  • 调用函数


F11 进入函数内部汇编代码:


xor

xor op1, op2

  • 将op1和op2异或的结果赋值给op1,类似于op1 = op1^op2

jmp

跳转到某个内存地址去执行代码


带条件跳转


汇编:



分析:


  • jne:jump not equal,结果不相等才跳转



常见代码汇编分析

  • 1



    汇编代码:


  • 2


为什么用mov?



mov不支持内存到内存

用debug模式调试查看汇编代码,release模式下,没用代码会被优化掉

  • 3


注意: mov 都是带单位的
汇编分析:



内存概图


mov dword ptr[age], 3
lea eax, [age]
mov  dword ptr[p], eax
mov eax,dword ptr[p]
mov dword ptr[eax], 5

引用补充

  • 结构体的引用:


  • 指针的引用:


  • 数组的引用:


常引用

  • 引用可以被const修饰,这样就无法通过引用修改数据了,即常引用

必须写在&符号的左边才算常引用

特点:

  • 可以指向临时数据(常量、表达式、函数返回值等)
  • 可以指向不同类型的数据
  • 作为函数参数时(此规则也适用于const指针)

可以接受const和非const实参(非const引用,只能接受非const实参)
可以跟非const引用构成重载

可以访问能修改:



因为本质是指针:



几种不同的写法的情况:
  • 常引用可以指向临时数据,常量



带来的重大用处:引用不可以,常引用可以
引用:



常引用:


下面的函数定义对应函数不能直接穿常量:


函数参数常引用就可以了:const引用可接收范围很大


和非const引用构成重载


相关文章

  • 从C++探究汇编.04

    [地址值] 中括号[ ]里面放的都是内存地址 word是2字节,dword是4字节,qword是8个字节 lea ...

  • 从C++探究汇编.05

    补充 movmov 不能左右都放内存可以放立即数,参考官方文档 数组 数组名arr其实是数组的地址,也是数组首元素...

  • 从C++探究汇编.06

    封装 成员变量私有化,提供公共的getter和seter给外界去访问成员变量 内存空间的布局 每个应用都有自己独立...

  • 从C++探究汇编.01

    学习C++的必要性 得益于它的高效性、稳定性、跨平台性,所以应用范围广泛; 是很多语言的老祖宗,理解C++相当理解...

  • 从C++探究汇编.02

    默认参数 C++允许函数设置默认参数,调用时根据情况省略实参: 默认函数只能按照右到左的顺序如果函数同时有声明、实...

  • CAS与内存屏障: 内联汇编的实际应用场景_(S2实现CAS)

    c++的CAS与内存屏障: 从c/c++的内联汇编说起(S3) 现在讨论下内联汇编与CAS lock-free是什...

  • c++基础之变量和基本类型

    之前我写过一系列的c/c++ 从汇编上解释它如何实现的博文。从汇编层面上看,确实c/c++的执行过程很清晰,甚至有...

  • C语言简单实现面向对象思想

    C语言和C++都会经过汇编,生成汇编代码,在汇编代码的阶段,是分辨不出是C语言还是C++语言的。在早期C++还没有...

  • 内联汇编

    内联汇编是指在 C/C++ 代码中嵌入的汇编代码,与全部是汇编的汇编源文件不同,它们被嵌入到 C/C++ 的大环境...

  • C++学习:机器中没有随机

    这是我不知道第几次学习C++了,这次我打算从汇编语言开始学习来理解C++的内存机理。 汇编语言中,内存分为RAM和...

网友评论

      本文标题:从C++探究汇编.04

      本文链接:https://www.haomeiwen.com/subject/drcaaltx.html