前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ARM64下的汇编循环

ARM64下的汇编循环

原创
作者头像
Wilbur-L
修改2021-02-03 18:03:08
1.3K0
修改2021-02-03 18:03:08
举报

一·代码

do-while循环

void main(){

int sum = 0;

int i = 1;

do{

sum = sum + 1;

i++;

}while (i < 100 );

}

这次我们利用Hopper

do-while
do-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++;

}

while
while

100006234处:w8入栈

100006238处:cmp比较 w8-100

10000623c处:b.gt 跳转到100006278

100006240~100006270处:执行代码

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

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

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一·代码
    • do-while循环
      • 汇编分析:
        • While&For循环
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档