(i386:accu+base)))
(list (lambda (f g ta t d)
(i386:pop-base)))
- (cond ((equal? array "g_functions") ;; FIXME
- (list (lambda (f g ta t d)
- (append
- (i386:base-address->accu-address)
- (i386:accu+n 4)
- (i386:base+n 4)
- (i386:base-address->accu-address)
- (i386:accu+n 4)
- (i386:base+n 4)
- (i386:base-address->accu-address)))))
- (else (list (lambda (f g ta t d)
- (i386:base->accu-address)))))))))
+ (if (eq? size 1) (list (lambda (f g ta t d)
+ (i386:byte-base->accu-address)))
+ (append
+ (list (lambda (f g ta t d)
+ (i386:base-address->accu-address)))
+ (if (> size 4)
+ (list (lambda (f g ta t d)
+ (append
+ (i386:accu+n 4)
+ (i386:base+n 4)
+ (i386:base-address->accu-address))))
+ '())
+ (if (> size 8)
+ (list (lambda (f g ta t d)
+ (append
+ (i386:accu+n 4)
+ (i386:base+n 4)
+ (i386:base-address->accu-address))))
+ '())))))))
;; g_cells[i] = c;
((expr-stmt (assn-expr (array-ref (p-expr (ident ,index)) (p-expr (ident ,array))) (op ,op) ,b))
(i386:accu+base)))
(list (lambda (f g ta t d)
(i386:pop-base)))
- (cond ((equal? array "g_functions") ;; FIXME
- (list (lambda (f g ta t d)
- (append
- (i386:base-address->accu-address)
- (i386:accu+n 4)
- (i386:base+n 4)
- (i386:base-address->accu-address)
- (i386:accu+n 4)
- (i386:base+n 4)
- (i386:base-address->accu-address)))))
- (else (list (lambda (f g ta t d)
- (i386:base->accu-address)))))))))
+ (if (eq? size 1) (list (lambda (f g ta t d)
+ (i386:byte-base->accu-address)))
+ (append
+ (list (lambda (f g ta t d)
+ (i386:base-address->accu-address)))
+ (if (> size 4)
+ (list (lambda (f g ta t d)
+ (append
+ (i386:accu+n 4)
+ (i386:base+n 4)
+ (i386:base-address->accu-address))))
+ '())
+ (if (> size 8)
+ (list (lambda (f g ta t d)
+ (append
+ (i386:accu+n 4)
+ (i386:base+n 4)
+ (i386:base-address->accu-address))))
+ '())))))))
;; g_functions[g_function++] = g_foo;
((expr-stmt (assn-expr (array-ref (post-inc (p-expr (ident ,index))) (p-expr (ident ,array))) (op ,op) ,b))
(i386:accu+base)))
(list (lambda (f g ta t d)
(i386:pop-base)))
- ;; FIXME
- (cond ((equal? array "g_functions") ;; FIXME
- (list (lambda (f g ta t d)
- (append
- (i386:base-address->accu-address)
- (i386:accu+n 4)
- (i386:base+n 4)
- (i386:base-address->accu-address)
- (i386:accu+n 4)
- (i386:base+n 4)
- (i386:base-address->accu-address)))))
- (else (list (lambda (f g ta t d)
- (i386:base->accu-address)))))
+ (if (eq? size 1) (list (lambda (f g ta t d)
+ (i386:byte-base->accu-address)))
+ (append
+ (list (lambda (f g ta t d)
+ (i386:base-address->accu-address)))
+ (if (> size 4)
+ (list (lambda (f g ta t d)
+ (append
+ (i386:accu+n 4)
+ (i386:base+n 4)
+ (i386:base-address->accu-address))))
+ '())
+ (if (> size 8)
+ (list (lambda (f g ta t d)
+ (append
+ (i386:accu+n 4)
+ (i386:base+n 4)
+ (i386:base-address->accu-address))))
+ '())))
((ident-add info) index 1)))))
;; DECL