- ,@(unless (eq size :dword)
- `((move eax-tn value)))
- (inst mov (sc-case offset
- (immediate
- (make-ea ,size :base sap
- :disp (tn-value offset)))
- (t (make-ea ,size
- :base sap
- :index offset)))
- ,(if (eq size :dword) 'value 'temp))
- (move result
- ,(if (eq size :dword) 'value 'eax-tn))))))))
+ ,@(unless (eq size :dword)
+ `((move eax-tn value)))
+ (inst mov (sc-case offset
+ (immediate
+ (make-ea ,size :base sap
+ :disp (+ (tn-value offset)
+ (* ,element-size disp))))
+ (t (make-ea ,size
+ :base sap
+ :index offset
+ :disp (* ,element-size disp))))
+ ,(if (eq size :dword) 'value 'temp))
+ (move result
+ ,(if (eq size :dword) 'value 'eax-tn))))))))