backend: i386 어셈블리를 내고 Windows 11 실행 파일을 만든다

fec --emit-asm -> wasm -> wlink -> .exe. 툴체인은 고정된 Open Watcom 그대로다.

레지스터 할당기가 없다. 임시값마다 스택 슬롯을 주고, 명령마다 피연산자를
고정 레지스터로 읽어 계산하고 다시 저장한다. 느린 코드지만 명백히 옳은
코드이고, 옳은 것이 먼저다. 나중에 할당기를 끼워도 나머지는 모른다 --
임시값이 어디 사는지만 바뀐다.

런타임 fec/rt/start.asm 은 진입 스텁과 fe_trap 이다. trap 은 이유와 파일과
줄을 stderr 에 쓰고 3으로 끝낸다.

처음으로 Ferro 프로그램이 실행됐다:

  1..10 합         -> 55
  (7*6-2)/4        -> 10
  루프+호출+분기   -> 1

tests/build.py 가 컴파일하고 링크하고 돌린다.
This commit is contained in:
2026-08-17 05:55:34 +09:00
parent 6ee3764667
commit e5093e690d
9 changed files with 662 additions and 7 deletions
+1
View File
@@ -5,6 +5,7 @@ void fe_ir_module_init(FeIrModule *m)
{
fe_arena_init(&m->arena, 16384);
m->unit_file = "";
m->entry_main = 0;
m->funcs = 0;
m->last_func = 0;
m->globals = 0;