1 ;;;============================================================================
3 ;;; File: "_codegen.scm"
5 ;;; Copyright (c) 2010-2012 by Marc Feeley, All Rights Reserved.
7 ;;;============================================================================
9 ;;; This module implements the code generation infrastructure.
11 (namespace ("_codegen#") ("" include))
12 (include "~~lib/gambit#.scm")
15 (include "_codegen#.scm")
19 ;;;============================================================================
21 (define (make-codegen-context)
22 (let ((cgc (make-vector (+ (asm-code-block-size) 3) 'codegen-context)))
23 (codegen-context-listing-format-set! cgc #f)
24 (codegen-context-arch-set! cgc #f)
25 (codegen-context-fixup-list-set! cgc '())
28 (define (codegen-context-listing-format cgc)
29 (vector-ref cgc (+ (asm-code-block-size) 0)))
31 (define (codegen-context-listing-format-set! cgc x)
32 (vector-set! cgc (+ (asm-code-block-size) 0) x))
34 (define (codegen-context-arch cgc)
35 (vector-ref cgc (+ (asm-code-block-size) 1)))
37 (define (codegen-context-arch-set! cgc x)
38 (vector-set! cgc (+ (asm-code-block-size) 1) x))
40 (define (codegen-context-fixup-list cgc)
41 (vector-ref cgc (+ (asm-code-block-size) 2)))
43 (define (codegen-context-fixup-list-set! cgc x)
44 (vector-set! cgc (+ (asm-code-block-size) 2) x))
46 ;;;============================================================================