fun Rx(i0, var Q : ushort queue) {
val ii = i0?ext(32);
if(ii == 0) return 0?ext(64);
else if(ii < 8) {
Q?push_back(ii?cvt(ushort));
return global_registers[ii-1];
} else {
val win = (CWP?cvt(ulong) - (ii / 16) + 8 ) % 8 ;
ii = ii & 0xf?ext(32);
Q?push_back((16*win+ii?cvt(ulong)+8)?cvt(ushort));
return register_windows[win][ii];
}
}