(emit-insts codegen (list (make-set-inst "u" "v")
(make-set-inst "v" r))))
(emit-inst codegen (make-while-inst "v" (codegen-pop-block codegen)))
- (emit-inst codegen (make-if-inst "a" (make-set-inst "*a" "aa") nil))
+ (emit-inst codegen (make-if-inst "a" (make-set-inst "*a" "aa")))
(deliver-expr codegen :return "u")
(codegen-pop-function codegen "gcd"
(c-type (fun int
("a"))
do (ensure-var codegen name c-type-int init))
(ensure-var codegen "g" c-type-int
- (make-call-inst "gcd" (list "u" "v" "&a")))
- (emit-inst codegen (make-expr-inst
- (make-call-inst "printf"
- (list "\"%d*%d == %d (mod %d)\\n\""
- "a" "u" "g" "v"))))
+ (make-call-inst "gcd" "u" "v" "&a"))
+ (deliver-call codegen :void "printf"
+ "\"%d*%d == %d (mod %d)\\n\"" "a" "u" "g" "v")
(deliver-expr codegen :return 0)
(codegen-pop-function codegen "main"
(c-type (fun int