十六.反汇编

搞懂本质
直接看到了sizeof,然后去看看他里面的东西,就给他一个具体的数字,说明他是一个符号而已

sizeof 就是一个符号,编译器一看到他,就知道是这个符号了,然后给他设置内部的数而已


int c = ++a

bp指针如果加的话,就是找参数,如果减法,就是找到局部变量;

init c = ++a + ++a
看看这句话,结果39

编译器不一样,这就话有可能结果也不一样,实际开发中不要这样写,不安全;


访问结构体属性
比较条件结果表
符号寄存器,存放比较的结果,修改相应的二进制位
Jietu20170520-121738.jpg

switch和if的效率问题

if (a > 0),bp-4,局部变量

8086架构有16个寄存器;
ARM架构有37个寄存器;6个特定的寄存器,其他都叫通用寄存器

ARM寄存器.gif
EFLAGS标志寄存器图示01.png

switch函数的反汇编1
switch函数的反汇编2
if语句

在这种基本比较中,我们认为是相同的,但是其他情况就不应了;

switch123
switch1-7

开辟空间,放指令,将来拿来就用,然后保存,cmp的结果都放到哪里,还有要去执行的代码放到内存中,保存内存地址,将来直接用,拿空间换时间;

编译器的优化-有些优化了时间,有些最大优化,有些尽可能优化。。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容