Não há garantia de que um determinado endereço virtual seja mapeado para um endereço físico exclusivo. Não há garantia de que um determinado endereço virtual mapeie para qualquer endereço físico. Não há garantia de que qualquer mapeamento entre um endereço virtual e algum endereço físico permaneça consistente por qualquer período de tempo interessante.
Então, sua pergunta realmente não reflete o modo como a memória virtual funciona. Você trabalha em termos de endereços virtuais. O kernel pode mexer com coisas como o MMU, no entanto, e sempre que ele gosta de mudar os pontos onde, então mesmo se você soubesse algum endereço físico, você nunca poderia usá-lo para nada. Mesmo que você tenha informações suficientes do kernel visível controlando seu processo para inferir onde algo pode estar, você não pode ter certeza de que não está em alguma VM, e há toda uma outra camada de indireção além do que você veja - de modo que o que você acha que é um endereço físico é na verdade apenas o endereço virtual dentro de algum software host da VM.
Seus endereços virtuais são agrupados em páginas. O MMU é programado com algumas tabelas de páginas, portanto, ele possui algum mapeamento. Se houver um registro simples com o deslocamento dentro da MMU, você não terá como obtê-lo da MMU, porque não é um registrador de CPU que faz parte do ISA. (E em máquinas mais antigas, a MMU era um chip físico completamente separado da CPU.) A única coisa que você pode fazer é ler um monte de documentação da MMU para sua arquitetura e ter acesso à configuração pagetable do kernel e passar por essas coisas. "Emular" o comportamento da MMU em determinados inputs. A própria CPU não está nem (visivelmente / diretamente) ciente da indireção.
Então, o que você realmente quer fazer?