リスト25 リスト26 リスト27 リスト28


〔リスト25〕case文で範囲指定を使用しない例(test62.c)
	#include <stdio.h>
	int main(void)
	{
	 int temp;
	 int data;
	 switch  ( data )
	 {
	  case 1:
	   temp = 5;
	  case 2:
	   temp = 9;
	  case 3:
	   temp = 9;
	  case 4:
	   temp = 9;
	  case 5:
	   temp = 9;
	  case 6:
	   temp = 10;
	 }
	 return;
	}


〔リスト26〕test62.cから生成されたアセンブラ(test62.s)
	 .file "test62.c"
	 .version "01.01"
	gcc2_compiled.:
	.text
	 .align 4
	.globl main
	 .type  main,@function
	main:
	 pushl %ebp
	 movl %esp,%ebp
	 subl $24,%esp
	 movl -8(%ebp),%eax
	 decl %eax
	 cmpl $5,%eax
	 ja .L3
	 movl .L10(,%eax,4),%eax
	 jmp *%eax
	 .p2align 4,,7
	.section .rodata
	 .align 4
	 .align 4
	.L10:
	 .long .L4
	 .long .L5
	 .long .L6
	 .long .L7
	 .long .L8
	 .long .L9
	.text
	 .p2align 4,,7
	.L4:
	 movl $5,-4(%ebp)
	.L5:
	 movl $9,-4(%ebp)
	.L6:
	 movl $9,-4(%ebp)
	.L7:
	 movl $9,-4(%ebp)
	.L8:
	 movl $9,-4(%ebp)
	.L9:
	 movl $10,-4(%ebp)
	.L11:
	.L3:
	 jmp .L2
	 .p2align 4,,7
	.L2:
	 movl %ebp,%esp
	 popl %ebp
	 ret
	.Lfe1:
	 .size  main,.Lfe1-main
	 .ident "GCC: (GNU) 2.95.3 20010315 (release)"


〔リスト27〕case文で範囲指定を使用する例(test63.c)
	#include <stdio.h>
	int main(void)
	{
	 int temp;
	 int data;
	 switch  ( data )
	 {
	  case 1:
	   temp = 5;
	  case 2 ... 5:
	   temp = 9;
	  case 6:
	   temp = 10;
	 }
	 return;
	}


〔リスト28〕test63.cから生成されたアセンブラ(test63.s)
	 .file "test63.c"
	 .version "01.01"
	gcc2_compiled.:
	.text
	 .align 4
	.globl main
	 .type  main,@function
	main:
	 pushl %ebp
	 movl %esp,%ebp
	 subl $24,%esp
	 movl -8(%ebp),%eax
	 cmpl $5,%eax
	 jg .L9
	 cmpl $2,%eax
	 jge .L5
	 cmpl $1,%eax
	 je .L4
	 jmp .L3
	 .p2align 4,,7
	.L9:
	 cmpl $6,%eax
	 je .L6
	 jmp .L3
	 .p2align 4,,7
	.L4:
	 movl $5,-4(%ebp)
	.L5:
	 movl $9,-4(%ebp)
	.L6:
	 movl $10,-4(%ebp)
	.L8:
	.L3:
	 jmp .L2
	 .p2align 4,,7
	.L2:
	 movl %ebp,%esp
	 popl %ebp
	 ret
	.Lfe1:
	 .size  main,.Lfe1-main
	 .ident "GCC: (GNU) 2.95.3 20010315 (release)"