화재 테스트: 재귀 계승

PHPz
풀어 주다: 2024-08-14 10:45:05
원래의
1018명이 탐색했습니다.

Teste de fogo: fatorial recursivo

POJ(JVM의 Pascal)를 따르지 않는 사람들을 위해 JVM을 실행 환경으로 사용할 수 있도록subset을 Pascal에서 JASM(Java Assembly)으로 변환하는 컴파일러입니다.

지난 포스트에서는Pascalread/readln지원이 구현되었는데, 이는 표준 입력(stdin)에서 데이터를 읽을 수 있게 해주는 기능입니다. 이 간행물에서는 POJ의 목표 중 하나인 표준 입력에서 숫자를 읽고 계승을 재귀적으로 계산하는 작업을 완료합니다.

JVM용으로 컴파일하는 동안 이 놀라운 가상 머신의 다양한 지점의 기능을 자세히 설명할 필요가 있습니다. 따라서 JVM의 내부 작동 방식과 일부 지침(opcodes)을 여러 번 자세히 설명합니다.

재귀 계승, 케이크 장식 :-)

프로젝트 초반에 언급했듯이 목표 중 하나는 표준 입력에서 계산할 숫자를 읽어서 계승을 재귀적으로 계산할 수 있도록 하는 것이었습니다. 현재까지 POJ의 구현을 통해 다음과 같은 목표가 가능해졌습니다.

  • Hello world: ANTLR, 파서 및 코드 생성Java Assembly;
  • 을 사용하여 프로젝트의 코드 기반을 만들었습니다.
  • 덧셈, 뺄셈, 곱셈, 나눗셈 연산자 및 조건문의 시작 - if: 조건문에 대한 초기 지원뿐만 아니라 연산자 지원도 시작되었습니다.
  • Repeat, while 및 for: 반복 구조 지원
  • 파스칼의 함수: 재귀 함수 구현

이제 지금까지 개발된 내용을 검증할 시간이 왔습니다. 아래 Pascal 프로그램에서는 다음과 같이 설명합니다.

으아아아

POJ는 다음어셈블리를 올바르게 생성합니다.

으아아아

마지막으로, 끝

이제 이 프로젝트로 학습 여정이 끝났습니다.

이 프로젝트를 통해 컴파일러 영역의 몇 가지 흥미로운 사항(예: 생성된 코드 최적화)을 탐색할 수 있습니다. 누가 알겠습니까? 가까운 시일 내에 최적화를 통해 새로운 시리즈를 시작할 것입니다 :-)

완전한 프로젝트 코드

프로젝트의 전체 코드와 문서가 포함된 저장소가 여기에 있습니다.

위 내용은 화재 테스트: 재귀 계승의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!