부두 컴파일러는 부두 프로그래밍 언어의 구현합니다. & nbsp; 부두 프로그래밍 언어는 설정 플랫폼의 명령을 통해 추출 및 호출 규칙을하지만, 그렇지 않으면 전혀 아무것도 할 무료 프로그래머를 떠나, 낮은 수준의 프로그래밍 언어입니다.
부두 컴파일러는 루비로 작성-I386 호환, AMD64, 및 MIPS CPU에 대한 코드를 생성한다. 추가 대상 CPU에 대한 지원은 미래에 대한 계획입니다.
용법
voodooc 프로그램을 실행하여, 또는 루비 API를 사용하여 : 부두 컴파일러를 사용하는 방법은 두가지가 있습니다.
voodooc 프로그램은 부두 소스 파일을 컴파일합니다. 그것의 사용은 유통, voodooc.1 맨 페이지에 설명이 포함되어 있습니다. 다음 voodooc는 소스 파일 hello.voo에서 실행 안부를 만드는 데 사용할 수있는 방법의 예이다 :
$의 voodooc의 hello.voo
$ CC hello.o -o 안녕하세요
$ ./hello
안녕하세요, 세계!
hello.voo의 구현은 분포의 디렉토리 시험에서 발견 할 수있다.
부두 컴파일러를 사용하는 두 번째 방법은 루비 프로그램을 사용하는 것입니다. 이것은 .voo 파일을 생성 할 필요없이 타겟 플랫폼에 대한 코드를 생성하는데 이용 될 수있다. 다음은 계승을 계산하는 함수 사실의 정의를 포함, fact.o라는 오브젝트 파일을 생성하는 예이다 :
'부두'를 필요
발전기 = 부두 :: CodeGenerator.get_generator : 아키텍처 => : I386,
& NBSP; 형식 => : 엘프
generator.export : 사실
generator.add_function_label : 사실
generator.add_function의 [: n]은,
& NBSP; [: ifle, [: 아니오, 1]
& NBSP; # 다음
& NBSP; [[: 리턴 1]],
& NBSP; #의 다른
& NBSP; [[:하자 : X : 서브 : N, 1]
& NBSP; [: 세트 : X : 전화 : 사실, : X],
& NBSP; [: 리턴 : MUL, : N : X]]]
File.open ( 'fact.o', 'w') {| OUTFILE | generator.write OUTFILE}
루비 프로그램에 사용할 수있는 부두 컴파일러 API는 API 문서에서 설명
이 릴리스의 새로운 기능입니다 무엇 :. 루비 1.9
이 호환성, 루비 1.8에 추가; 확인 시험은 지금 통과하고 실패한 테스트의 수를보고합니다.
많은 바르 테스트는 많은 인자들, 많은 인수 꼬리, 그리고 많은 지역 주민들로 분할되었다.
이 어떤 버전 1.0.1에서 새로운 것은
이 버전은 모든 오류에 대한 소스 코드의 위치를보고하고 블록 내부에 여러 오류를보고 할 수있는 파서 개선의 번호를 추가합니다 , 함수 및 조건문. 파서에 대한 몇 가지 테스트가 추가되었습니다.
이 릴리스는 빈 입력에 실패 파서 원인 코멘트 다음 문장과 문제에 구문 분석 오류를 해결합니다.
이 버전 1.0.0의 새로운 기능 :
이 ARM 코드 생성기 : 이제 ARM 아키텍처에 대한 조립 및 ELF 오브젝트 코드를 생성 할 수 있습니다 컴파일러.
향상된 오류보고 : 이상의 오류가 검출되고, 에러는 에러 메시지를 이해하기 쉽게보고되어있다.
검사기 모듈이 새 모듈을 사용할 수 있습니다 부두 코드를 생성 유효성을 검사합니다. 이 구문 분석 코드의 유효성을 검사하는 파서에 의해 사용된다.
기능 인터페이스 : 구현의 기능, 프로그램에 명령 줄에서 조회 할 수 있습니다.
이 버전 0.7.0의 새로운 기능 :
이 블록 : 이러한 로컬 변수가하자로 정의 될 수있는 범위를 제공합니다. 이러한 변수는 블록의 끝까지하자 문의 끝에서 존재한다. 블록 동작이 발생할 수있는 장소에 발생할 수 있습니다. 그들은 블록 시작과 끝 블록으로 종료됩니다.
체인화 된 조건문 : 지금 쓰기 하 '가능하다, 그렇지 않은 경우 & quot ;, 대신 다른 절에 중첩 된 경우를 요구하는.
이동 및 회전 : 이동 조치 (ASR, BSR, SHL, SHR) 및 회전 동작은 (ROL은, ROR)이 추가되었습니다.
값없이 반환 : 반환 지금 평가하는 식을 지정하지 않고 사용할 수있다. 이 정의되지 않은 값이 함수에서 반환됩니다.
이 버전 0.6.3의 새로운 기능 :
이 릴리스에서 표현식 소개 : @와 라벨, 지역 변수, 또는 정수를 접두어로, 값으로 처리됩니다 주소 및 해당 주소에 저장된 단어가 반환됩니다.
또한, 일부 버그 방법 문자열에서 발견되었다 생성 어셈블리 코드에서 부호화 하였다.
이 오류가 수정되었습니다 및 버전 0.6.3이 올바르게 모든 256 바이트 값을 포함하는 문자열을 처리합니다.
이 버전 0.6.2의 새로운 기능 :
이 릴리스와 i386 AMD64에 대한 설정 단어의 구현에 버그를 수정하고 이전에 제대로 작동하지 않은 경우에 테스트를 추가 .
댓글을 찾을 수 없습니다