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 를 추천 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
python은 두 갈래 트리의 앞뒤 순서를 차원 순서대로 반복합니다. 귀속과 비귀속Reference https://blog.yangx.site/2016/07/22/Python-binary-tree-traverse/...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.