go top

20世纪60年代初,在提倡规则让读写程序更轻松的时代潮流中,结构化程序设计应运而生。时至今日,大家对if、while这样的语句早已习以为常。结构化程序设计的初衷正是通过导入这些语句使代码结构理解变得简单。

汇编语言中是没有if语句的。

C语言代码:

int main(){

  int x = 123

  if (x == 456){

    ...

  }

  /* if语句后 */

}

汇编语言

_main:    
  ...  
  mov1 $123, -8(%rbp)
  # if语句前  
  mov1 -8(%rbp) , %eax
  cmp1 $456, %eax  
  jmp LBB1_2
  # if语句中
LBB1_2:  
  # if语句后  
  ...  

1 首先把-8(%rbp)理解为C语言中的x;

2 ①句把数值123代入x;

3 ②句把x的值移存到临时场所后,把它和数值456比较;

4 ③句是指当条件为假时转到LBB1_2处;

while语句,让反复执行的if语句更简洁

C语言

void use_while(int x){

  printf("use_while/n");

  while(x > 0){

    printf("%d/n", x) ;

    x--;

  }

}

不使用while语句的C语言表达方式

void use_while(int x){

  printf("use_while/n");

  start_loop:

  if(!(x > 0)) goto end-loop;

    printf("%d/n", x) ;

    x--;

    goto start_loop;

  end_loop:

    return;

}

 

for语句:让数值渐增的while语句更简洁

C语言

for (i = 0; i < N; i++){

  printf("%d\n", i);

}

不使用for语句的表达式

i = 0;

while(i < n){

  printf("%d\n", i);

  i++;

}

foreach:根据处理的对象来控制循环操作

while语句通过条件判断来控制循环操作,for语句通过循环次数来控制循环操作;而foreach句型则是通过处理的对象来控制循环损伤