#include<stdio.h>
void show()
{
int i,j;
for(i=0;i<100;i++){
for(j=2;j<=i;j++){
if(i%j==0) break;
}
if(j>=i) printf("%d",i);
}
}
show:
.LFB24:
pushl %ebx //将%ebx压入栈,%ebx作为变量i的寄存器
subl $24, %esp //栈顶指针减24
movl $0, %ebx //先把i=0存到%ebx寄存器
jmp .L2 //无条件,直接跳转到L2
.L4: //执行第二个for循环的语句
movl %ebx, %eax //把%ebx(i)复制给 %eax
cltd //R[%edx]:R[%eax] = 符号位扩展R[%eax],转换为4字节(把%eax符号位扩展到%edx,此时%edx存放的是%ebx(i)的符号位)
idivl %ecx //R[%edx] = R[%edx]:R[%eax] % j; R[%eax] = R[%edx]:R[%eax] / j;(把i%j存放到%edx中,把i/j存放到%eax)
testl %edx, %edx //测试双字,与关系,S1 & S2(判断%edx是否为0,即判断i%j是否为0)
je .L3 //相等|零时候跳转&
一个简单的双重for循环的汇编语句解释
最新推荐文章于 2022-01-28 13:38:40 发布