ARM64下的汇编循环

2021-02-03 18:03:08 浏览数 (1)

一·代码

do-while循环

void main(){

int sum = 0;

int i = 1;

do{

sum = sum 1;

i ;

}while (i < 100 );

}

这次我们利用Hopper

do-whiledo-while

汇编分析:

100006250~100006260处分别是拉伸栈空间,分别给零寄存器,w0,x1入栈数据。

loc_10000626c~100006288处开始执行

100006288处:cmp比较w8-100

10000628c处:如果小于跳转到10000626c处循环,否则满足条件执行100006290

总结:先执行代码,后判断循环是do-while的特点

While&For循环

while (i<100){

printf("%d",i);

i ;

}

for (i < 100){

printf("%d",i);

i ;

}

whilewhile

100006234处:w8入栈

100006238处:cmp比较 w8-100

10000623c处:b.gt 跳转到100006278

100006240~100006270处:执行代码

100006274处:执行完毕往回调100006234 循环

10000623c处:判断是否b.gt,true调转到100006278,false继续循环

神奇的是:汇编里for循环与while循环的汇编代码极其相似。

0 人点赞