switch 선택 구조의 기계 적 탐구 (C 언어)

                  ,    I-32

위의 그림 에서 간단 한 C (이 예 에서 C 는 숫자 에 대한 비교 만 지원 하기 때문에 일부 고급 언어, 예 를 들 어 자바 script 은 문 자 를 비교 할 수 있 습 니 다. 구체 적 으로 어 셈 블 리 코드 가 약간 다 릅 니 다) 의 switch 문 구 를 어 셈 블 리 명령 으로 탐구 할 수 있 습 니 다.상술 한 그림 에서 몇 가지 재 미 있 는 일 을 알 수 있다.
switch 판단 대기 수의 상하 한 확인 방식
subl $10, %eax //             int a  = a - 10          10
//	                 ,    a < 10              1。
//	              	> 7       17 
cmpl $7, %eax  //         if(a - 10)  > 7         17 
ja .L5	//             .L5 

판단 을 기다 리 는 케이스 에 대한 점프 테이블 생 성
jmp *.L8(, %eax, 4)
//                       [10, 11, 12, ... 17]                 ,
                 。                ,  4      。

위 에서 알 수 있 듯 이 switch 는 점프 표를 통 해 조건 판단 을 실현 하고 구체 적 인 실현 세부 사항 은 if else 와 유사 하 다.만약 범위 가 매우 복잡 하 다 면, 예 를 들 어 [- 123123 ~ 3123123123] 는 생 성 된 점프 표를 매우 크게 만 들 수 있다.따라서 군더더기 가 많 고 데이터 밀도 가 크 지 않 을 때 If else 를 추천 합 니 다.

좋은 웹페이지 즐겨찾기