No, a pointer isn't truncated to 32-bit in your example, a difference between two pointers is cast to 32-bit. Provided regs.pc_p is a host pointer into the memory reserved for the Amiga (starting at NMEM_OFFSET) and isn't otherwise corrupt/invalid, the difference will never be greater than UINT_MAX-