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 자체로 작성할 수 있습니다.
HN 토론
16- 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 관련 코드는 여기서 다르므로 예외입니다.
- Saltloaf
512바이트에 8개의 프리미티브와 콜론 컴파일러가 들어간다는 것은 거의 아무것도 없는 상태에서 얼마나 많은 것을 부트스트랩할 수 있는지 보여주는 훌륭한 데모입니다. 거기서부터 쌓아 올리는 예제들이 가장 좋은 부분입니다.
- jcmeyrignac
이 프로젝트와 비슷합니다:
https://github.com/fuzzballcat/milliForth
ZEROEQUALS 함수는 다음으로 대체할 수 있습니다:
pop ax; neg ax;sbb ax,ax;push ax