> > this section of code is to extend the addr_regl to 64bit, and use *base* as > > temp
> > intermedia. The real intention could be to extend addr_regl into base, and > > then > > move base back to addr_regl for later use, but it wrongly assigning base to > > addr_regl directly, which will cause crash for every use of tcg_out_qemu_st. > > The intent is to zero-extend addr_regl into a temporary base = A0, and at > this > point is known to be unused. Afterward, whenever we talk about the low part > of > the address, we want to use the temporary and not the original input. > > For example, if addr_regl = S0, and guest_base = S1, then we want > > dext a0, s0, 31, 0 > dadd a0, s1, a0 > > instead of > > dext a0, s0, 31, 0 > mov s0, a0 > dadd a0, s1, s0 Got what you mean finally :-), it is better indeed. I'll send a new version patch for that, and send another patch trying to optimize the use of register by guest_base .