十六.反汇编

十六.反汇编_第1张图片
搞懂本质
十六.反汇编_第2张图片
直接看到了sizeof,然后去看看他里面的东西,就给他一个具体的数字,说明他是一个符号而已

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


十六.反汇编_第3张图片
int c = ++a

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

十六.反汇编_第4张图片
init c = ++a + ++a
十六.反汇编_第5张图片
看看这句话,结果39

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


十六.反汇编_第6张图片
访问结构体属性
十六.反汇编_第7张图片
比较条件结果表
十六.反汇编_第8张图片
符号寄存器,存放比较的结果,修改相应的二进制位
十六.反汇编_第9张图片
Jietu20170520-121738.jpg

switch和if的效率问题

十六.反汇编_第10张图片
if (a > 0),bp-4,局部变量

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

十六.反汇编_第11张图片
ARM寄存器.gif
十六.反汇编_第12张图片
EFLAGS标志寄存器图示01.png

十六.反汇编_第13张图片
switch函数的反汇编1
十六.反汇编_第14张图片
switch函数的反汇编2
十六.反汇编_第15张图片
if语句

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

十六.反汇编_第16张图片
switch123
十六.反汇编_第17张图片
switch1-7

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

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

你可能感兴趣的:(十六.反汇编)