boot2

Playing with the boostrap
git clone https://git.ryansepassi.com/git/boot2.git
Log | Files | Refs | README

049-init-scalar-global.scm (612B)


      1 ;; tests/cc-cg/49-init-scalar-global.scm — emit a global int with a
      2 ;; constant initializer; main returns its value.
      3 ;;
      4 ;; Models: int g = 42; int main(void) { return g; }
      5 ;; Runtime: exits 42.
      6 
      7 (let* ((cg  (cg-init))
      8        (g   (%sym "g" 'var 'static %t-i32 #f))
      9        ;; structured init: a single 4-byte LE bytevector piece for 42.
     10        (bv4 (make-bytevector 4 0))
     11        (_   (bytevector-u8-set! bv4 0 42))
     12        (init (list bv4)))
     13   (cg-emit-global cg g init)
     14   (cg-fn-begin cg "main" '() %t-i32)
     15   (cg-push-sym cg g)
     16   (cg-load cg)
     17   (cg-return cg)
     18   (cg-fn-end cg)
     19   (write-bv-fd 1 (cg-finish cg)))