512바이트 부트 섹터에 들어가는 16비트 x86 Forth, sectorforth

Sectorforth is a 16-bit x86 Forth that fits in a 512-byte boot sector

sectorforth는 512바이트 부트 섹터에 맞는 16비트 x86 Forth 구현체입니다. 1996년 Usenet 스레드에서 영감을 받았으며, 단 8개의 프리미티브와 5개의 변수, 2개의 I/O 프리미티브만 포함합니다. 이 최소한의 빌딩 블록으로 분기, 컴파일, 리턴 스택 조작 등의 단어를 Forth 자체로 작성할 수 있습니다. 콜론 컴파일러(:)를 제공하며, NASM으로 컴파일하고 QEMU에서 실행할 수 있습니다. 코드 구조는 jonesforth에서 많은 영감을 받았습니다.

sectorforth는 위 Usenet 게시물에 설명된 8개의 프리미티브만 포함하며, 분기, 컴파일, 리턴 스택 조작 등을 위한 단어는 모두 Forth 자체로 작성할 수 있습니다.
  1. anthk

    저는 Forth와 Lisp 둘 다 좋아하지만, SectorLisp이 훨씬 낫습니다.

    또한, 작은 데모로 Subleq/Muxleq에서 Eforth를 확인해 보세요:

    https://github.com/howerj/subleq

    subleq.fth/muxleq.fth를 편집하고 다음 옵션을 1로 설정하세요:

    1 constant opt.multi ( 큰 "pause" 프리미티브 추가 )

    1 constant opt.editor ( 텍스트 편집기 추가 )

    1 constant opt.info ( 정보 출력 함수 추가 )

    0 constant opt.generate-c ( C 코드 생성 )

    1 constant opt.better-see ( 'see'를 더 나은 버전으로 교체 )

    1 constant opt.control ( 더 많은 제어 구조 추가 )

    0 constant opt.allocate ( "allocate"/"free" 추가 )

    1 constant opt.float ( 부동 소수점 코드 추가 )

    0 constant opt.glossary ( "glossary" 단어 추가 )

    1 constant opt.optimize ( 추가 최적화 활성화 )

    1 constant opt.divmod ( "opDivMod" 프리미티브 사용 )

    0 constant opt.self ( 자기 해석기 [작동 안 함] )

    그런 다음 다음을 실행하여 float/do...loop 등을 포함한 새 EForth 이미지를 만드세요:

    ./muxleq ./muxleq.dec < muxleq.fth > new.dec

    Subleq은 원본이고, muxleq는 멀티플렉스된 것입니다. 명령은 동일하며, muxleq를 subleq로 바꾸면 됩니다 (fth 파일도 편집하세요).

    사용법: ./muxleq new.dec

    간단한 도움말:

    words

    Forth 문법에 대해서는 EForth Overview PDF로 충분하지만, 8086 관련 코드는 여기서 다르므로 예외입니다.

  2. Saltloaf

    512바이트에 8개의 프리미티브와 콜론 컴파일러가 들어간다는 것은 거의 아무것도 없는 상태에서 얼마나 많은 것을 부트스트랩할 수 있는지 보여주는 훌륭한 데모입니다. 거기서부터 쌓아 올리는 예제들이 가장 좋은 부분입니다.

  3. jcmeyrignac

    이 프로젝트와 비슷합니다:

    https://github.com/fuzzballcat/milliForth

    ZEROEQUALS 함수는 다음으로 대체할 수 있습니다:

    pop ax; neg ax;sbb ax,ax;push ax

이 날의 다른 글

2026-08-20