위험 경고: '가상화폐', '블록체인'이라는 이름으로 불법 자금 모집 위험에 주의하세요. — 은행보험감독관리위원회 등 5개 부처
검색
로그인
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
시장 동향 보기
카이로 명령에 대해 자세히 설명하십시오.
Sin7y
特邀专栏作者
2022-09-28 02:44
이 기사는 약 2540자로, 전체를 읽는 데 약 4분이 소요됩니다
이 문서에서는 상태 전환, 전환 논리, 명령어 확인, 명령어 예제 등을 포함하여 여러 관점에서 카이로 명령어를 자세히 해석합니다.

첫 번째 레벨 제목

1. 명령어 구조"12345678") 명령은 2워드를 차지하며 값은 두 번째 워드에 저장됩니다. 각 지시문의 첫 번째 단어는 다음 요소로 구성됩니다.

첫 번째 레벨 제목

2. 상태 전환

상태 전이 함수는 일반적인 상태 전이 단위를 나타내며(모든 명령어 유형의 처리 논리를 포함하므로) 계산은 일반적으로 순차적으로 실행되는 여러 명령어로 분해되므로 다음이 필요합니다.

b. 실행된 명령이 유효한 명령인지 확인합니다.

보조 제목

명령 실행 전후의 상태가 일치하면 다음 논리에 따라 상태 업데이트를 수행해야 합니다.

보조 제목

그림 1과 같이 명령은 다음 요소로 구성됩니다.

3. 명령어 예시

보조 제목

3.1 평등 주장

< left_handle_op > = < right_handle_op >

동등 주장 명령은 다음 구문으로 표현할 수 있습니다.

Note2:수식의 양쪽이 동일한지 확인합니다. 그렇지 않으면 프로그램 실행이 반환됩니다.

나눗셈과 뺄셈은 각각 피연산자 순서가 다른 곱셈과 덧셈으로 표현할 수 있습니다.

그림 4는 어설션 평등 명령의 몇 가지 예와 각 명령에 대한 해당 플래그 값을 제공합니다.

설명하다설명하다

명령어[fp+1] = 5:

◦ next_ap = ap => ap_update = 00 = 0 

◦ next_pc = pc + instruction_size => pc_update = 000 = 0 

◦ 어설션 명령어의 경우 => opcode = 4

◦ op0 및 op1에 추가 또는 mul이 없음 => res_logic(res) = 00 = 0

◦ 즉시 데이터 존재 => op1_src(op1) = 001 = 1

◦ 인접 주소 명령어 주소 => off_op1 = 1

◦ 방정식의 왼쪽 [fp + 1] => dst_reg(dst) = 1

◦ op0_reg/ off_op0 =>inital value(1/-1) //이 명령어는 이러한 플래그를 사용하지 않으므로 기본값을 채웁니다.

보조 제목

3.2 조건부 점프와 무조건 점프

jmp 명령을 사용하면 프로그램 카운터 pc의 값을 변경할 수 있습니다.

Cairo는 상대 점프(피연산자는 현재 pc에 대한 오프셋을 나타냄)와 절대 점프(각각 rel 및 abs 키워드로 표시됨)를 지원합니다. jmp 명령.

# Unconditional jumps. 

jmp abs

jmp rel 

# Conditional jumps. 

jmp rel if

그림 5는 jmp 명령의 몇 가지 예와 각 명령에 대한 해당 플래그 값을 제공합니다.

설명하다설명하다

명령어 jmp rel [ap +1] + [fp - 7]:

◦ next_ap = ap => ap_update = b00 = 0 

◦ next_pc = pc + res=> pc_update = b010 = 2 

◦ res = op0 + op1 => res_logic(res) = b01 = 1

◦ op1: [fp - 7] => op1_src(op1) = b010 = 2 

◦ op1: [fp - 7] => off_op1 = -7 

◦ op0: [ap + 1] => op0_src(op0) = 0 

◦ op0: [ap + 1] => off_op0 = 1 

◦ dst_reg/ off_dst =>inital value(1/-1) ///이 명령어는 이러한 플래그를 사용하지 않기 때문에 기본값을 채웁니다.

보조 제목

3.3 호출 및 반환

call 및 ret 명령을 사용하면 함수 스택을 구현할 수 있습니다. 호출 명령은 프로그램 카운터(pc) 및 프레임 포인터(fp) 레지스터를 업데이트합니다. 프로그램 카운터의 업데이트는 jmp 명령과 유사합니다. fp의 이전 값이 [ap]에 기록되어 ret 명령이 fp의 값을 호출 전의 값으로 재설정할 수 있습니다. ap+1], ret 명령이 뒤로 이동하여 호출 명령 다음에 코드 실행을 계속할 수 있도록 합니다. 두 개의 메모리 위치가 기록되었으므로 ap는 2씩 진행되고 fp는 새 ap로 설정됩니다.

call ret

call rel  

ret

그림 6은 call 및 ret 명령의 몇 가지 예와 각 명령에 대한 해당 플래그 값을 제공합니다.

설명하다설명하다

명령 호출 abs [fp + 4]:

◦ next_ap = ap => ap_update = b00 = 0 

◦ next_pc = res => pc_update = b001 = 1 

◦ res = op1 => res_logic(res) = b00 = 0 

◦ op1: [fp + 4] => op1_src(op1) = b010 = 2 

◦ op1: [fp + 4] => off_op1 = 4 

◦ op0_reg/ off_op0 =>◦ 호출 명령의 경우 => opcode = 0

◦ dst_reg/ off_dst =>inital value(0/0) ///이 명령어는 이러한 플래그를 사용하지 않으므로 기본값을 채웁니다.

보조 제목

3.4 고급 AP< op >명령 ap + =

그림 7은 높은 수준의 ap 명령과 각 명령에 해당하는 플래그의 일부 그림을 제공합니다.

설명하다설명하다

명령어 ap += 123:

◦ next_ap = ap + res => ap_update = b01 = 1

◦ next_pc = pc + instruction_size => pc_update = b000 = 0 

◦ res = op1 => res_logic(res) = b00 = 0 

◦ op1 = 123 => op1_src(op1) = b001 = 1 

◦ op1 = 123 => off_op1 = 1 

◦ op0_reg/ off_op0 =>◦ ap 명령 진행 => opcode = 0

◦ dst_reg/ off_dst =>Sin7y는 2021년에 설립되었으며 최고의 블록체인 개발자들로 구성되어 있습니다. 우리는 프로젝트 인큐베이터이자 블록체인 기술 연구 팀으로서 EVM, Layer2, 크로스체인, 프라이버시 컴퓨팅 및 자율 지불 솔루션과 같은 가장 중요하고 최첨단 기술을 탐구합니다.

회사 소개

Sin7y는 2021년에 설립되었으며 최고의 블록체인 개발자들로 구성되어 있습니다. 우리는 프로젝트 인큐베이터이자 블록체인 기술 연구 팀으로서 EVM, Layer2, 크로스체인, 프라이버시 컴퓨팅 및 자율 지불 솔루션과 같은 가장 중요하고 최첨단 기술을 탐구합니다.

위챗 공개 계정: Sin7Y

GitHub | Twitter | Telegram | MediumMirror | HackMD | HackerNoon

개발자
Odaily 공식 커뮤니티에 가입하세요
AI 요약
맨 위로
이 문서에서는 상태 전환, 전환 논리, 명령어 확인, 명령어 예제 등을 포함하여 여러 관점에서 카이로 명령어를 자세히 해석합니다.
작성자 라이브러리
Sin7y
Odaily 플래닛 데일리 앱 다운로드
일부 사람들이 먼저 Web3.0을 이해하게 하자
IOS
Android