I'm reading about MMU translation and how a CPU can execute a load instruction that reads a byte at an address, leading to it concatenating the PPN from the PTE with the VPO from a virtual address, making a physical address. But I'm not sure how this concatenation is done. This is the paragraph I'm referring to:
To begin, the MMU extracts the VPN ( OxOF) from the virtual address and checks with the TLB to see if it has cached a copy of PTE OxOF from some previous memory reference. The TLB extracts the TLB index (Ox03) and the TLB tag (Ox03) from the VPN, hits on a valid match in the second entry of set Ox3, and returns the cached PPN (OxOD) to the MMU. If the TLB had missed, then the MMU would need to fetch the PTE from main memory. However, in this case, we got lucky and had a TLB hit. The MMU now has everything it needs to form the physical address. It does this by concatenating the PPN (OxOD) from the PTE with the VPO (Ox14) from the virtual address, which forms the physical address (Ox354).
But my question is, how are (0x14) and (0x0d) concatenated? Could someone possibly show me the steps to how this is done?