Agent skill

bytecode-vm-design

바이트코드 컴파일러 + 스택 VM 설계 가이드. MiniLang을 바이트코드로 컴파일하고 VM에서 실행할 때 사용한다.

Stars 88
Forks 14

Install this agent skill to your Project

npx add-skill https://github.com/revfactory/claude-code-harness/tree/main/experiments/results/case-013/harness/.claude/skills/bytecode-vm-design

SKILL.md

Bytecode VM Design Skill

Opcode 인코딩

1바이트 opcode + 0~2바이트 오퍼랜드
예: OP_CONST 0x05 → [0x01, 0x05] (2바이트)
    OP_ADD         → [0x10]      (1바이트)
    OP_JUMP 0x00FF → [0x20, 0x00, 0xFF] (3바이트)

스택 기반 실행 모델

예: (10 + 3) * 2

OP_CONST 10    stack: [10]
OP_CONST 3     stack: [10, 3]
OP_ADD         stack: [13]
OP_CONST 2     stack: [13, 2]
OP_MUL         stack: [26]

클로저 & Upvalue 메커니즘

fn outer() {
  let x = 10;        // 로컬 변수 (스택)
  fn inner() {
    return x;         // upvalue로 캡처
  }
  return inner;       // outer 종료 후에도 x 접근 가능해야 함
}

// 컴파일 시:
// inner의 upvalue 목록: [{ index: 0, isLocal: true }]
// 
// 런타임:
// inner가 생성될 때 outer의 스택 슬롯 0을 가리키는 ObjUpvalue 생성
// outer가 반환될 때 ObjUpvalue를 "close" → 스택에서 힙으로 값 이동

VM 메인 루프 패턴

javascript
run() {
  while (true) {
    const op = this.readByte();
    switch (op) {
      case OP_CONST:
        this.push(this.readConstant());
        break;
      case OP_ADD: {
        const b = this.pop();
        const a = this.pop();
        this.push(a + b);
        break;
      }
      case OP_RETURN: {
        const result = this.pop();
        this.callFrames.pop();
        if (this.callFrames.length === 0) return result;
        this.push(result);
        break;
      }
      // ...
    }
  }
}

컴파일 패턴: if-else

javascript
// if (cond) { then } else { alt }
compileIf(node) {
  this.compile(node.condition);
  const jumpToElse = this.emitJump(OP_JUMP_IF_FALSE);
  this.emit(OP_POP); // condition 제거
  this.compile(node.thenBranch);
  const jumpOverElse = this.emitJump(OP_JUMP);
  this.patchJump(jumpToElse);
  this.emit(OP_POP); // condition 제거
  if (node.elseBranch) this.compile(node.elseBranch);
  this.patchJump(jumpOverElse);
}

Expand your agent's capabilities with these related and highly-rated skills.

revfactory/claude-code-harness

interpreter-design

Programming language interpreter design and implementation guide. Use when the user requests building an interpreter, parser, lexer, or language implementation — including Pratt parsing, AST evaluation, scope chains, and closures.

88 14
Explore
revfactory/claude-code-harness

express-api-design

Express.js REST API design and implementation guide. Use when implementing REST API endpoints, creating Express routes, or setting up API project structure with MVC pattern.

88 14
Explore
revfactory/claude-code-harness

query-engine-design

SQL query engine design and implementation guide. Use when the user requests building a SQL engine, query parser, query planner, or query executor — including in-memory storage, SQL parsing, and query optimization.

88 14
Explore
revfactory/claude-code-harness

api-documentation

Write accurate and complete library API documentation. Use when creating API docs, README files, or function reference documentation. Ensures all signatures, parameters, return types, and examples are precise.

88 14
Explore
revfactory/claude-code-harness

async-debugging

Analyze and fix race conditions and concurrency bugs in async code. Use when debugging async bugs, fixing race conditions, resolving concurrency issues, or when shared state is accessed by multiple async operations.

88 14
Explore
revfactory/claude-code-harness

reactive-spreadsheet-design

리액티브 스프레드시트 엔진 설계 가이드. 셀 수식 파싱, 의존성 그래프(DAG), 증분 재계산, 내장 함수 구현 시 사용한다.

88 14
Explore

Didn't find tool you were looking for?

Be as detailed as possible for better results