c 언어 switch 어 셈 블 리 의 실현

분기 가 비교적 많 을 때 switch 의 효율 은 if 보다 높 고 어 셈 블 리 에서 우 리 는 효율 이 높 은 원인 을 볼 수 있다.
switch 문장
1.정방 향 인 코딩 시 switch 문 구 는 if 문장의 약자 로 볼 수 있다.
在这里插入图片描述
2.break 가 switch 문장의 묘 용
1.switch 에 3 개의 분기 가 존재 할 때
在这里插入图片描述
브레이크 를 지 울 때.
在这里插入图片描述
2.switch 문장의 어 셈 블 리
1.switch 에 3 개의 분기 가 존재 할 때

#include<stdio.h>

void Function(int x) {
	switch (x) {
		case 1:
			printf("1");

		case 2:
			printf("2");
		case 3:
			printf("3");
		default:
			printf("4");
	}
}
int main() {
	Function(2);
	return 0;
}
在这里插入图片描述
이 때 switch 의 어 셈 블 리 코드 는 if 구문 과 다 름 이 없 음 을 알 수 있 습 니 다.
네 개의 if 문구 가 있 을 때 큰 표 가 생 성 됩 니 다.
在这里插入图片描述
2.switch 구문 에 네 개의 분기 가 나타 날 때 컴 파일 러 는 큰 표 가 생 긴 다.
단계:
1.들 어 오 는 수 를 1 에서 빼 고 비교한다.이 매개 변수 가 switch 문장의 최대 상수 보다 많 는 지 판단 합 니 다.즉,매개 변수 가 default 에 직접 들 어 가 는 지,아니면 case 에 들 어 가 는 지 판단 합 니 다.
2.매개 변수<=max 라면 레지스터 로 이 값 을 유지 합 니 다.표현 식 에 대 입 하여 큰 시 계 를 통 해 해당 주소 로 직접 이동 합 니 다.
주의 하 다.
분기 가 네 개 보다 적 으 면 switch 는 의미 가 없고 컴 파일 러 는 if...else...문 구 를 누 르 면 어 셈 블 리 를 합 니 다.
케이스 후의 상수 순 서 는 큰 표 의 생 성 에 영향 을 주지 않 습 니 다.
상수 값 의 순 서 를 흐 트 러 뜨리 고 어 셈 블 리 코드 를 관찰 하 다.
정방 향 코드
在这里插入图片描述
어 셈 블 리 코드
在这里插入图片描述
여기 서 볼 수 있 습 니 다.
연속 10 개 중 1 개 또는 2 개 를 지우 고 어 셈 블 리 에 변화 가 있 는 지 살 펴 본다.
정방 향 코드 는 이 렇 습 니 다.
在这里插入图片描述
여기 서 몇 개의 주소 가 같은 지 볼 수 있 습 니 다.
在这里插入图片描述
기본 주 소 를 가리 키 는 것 을 발견 할 수 있 습 니 다.
在这里插入图片描述
3.switch 에 여러 갈래 가 존재 하고 상수 연속 성 이 상대 적 으로 높 지 않 을 때
在这里插入图片描述
작은 시계 가 생 성 됩 니 다.
在这里插入图片描述
단계:
1.들 어 오 는 매개 변 수 를 최소 값 으로 줄 이 고 최대 값 에 비해 크 면 기본 적 인 곳 으로 이동 합 니 다.그렇지 않 으 면 차이 점 으로 작은 시 계 를 찾 은 다음 에 큰 시 계 를 찾 습 니 다.
보충:케이스 후의 상수 차이 가 클 때
컴 파 일 러 는 if...else...에 따라 어 셈 블 리 를 진행 합 니 다.
c 언어 switch 어 셈 블 리 의 실현 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 c 언어 switch 어 셈 블 리 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기