Not entirely sure what you mean by "table walk". In order to provide virtual memory, the MMU must translate linear addresses to physical ones, which involves interpreting the page tables. If you meant that, then the answer is yes.
If you meant an instruction that the programmer can use to do a table walk to detect errors (like the "AT" instruction on ARM), then the answer is no. Page translation is hidden from the programmer, and entirely in the realm of the MMU (which is fine because it is the programmer who provides the page tables, so they should know what's in them).
Doing a table walk in software is simple: first map the root page at a fixed address (let's say 0x10000) call this "uint32_t*
tmp". Then take a linear address
virtaddr, shift it and mask it to get the first page index. Get the address from
tmp[idx]. Repeat the process: map the new address at
tmp, and get the next index from virtaddr. You can do any checks or validation on the page table entry you'd like during this. Stop when there's only 12 bits left in
virtaddr.
This scheme works for both 32 and 64 bit systems, the only difference is the number of bits to shift and mask. On 32 bit (early days of x86) you have 10+10+12, while on 64 bits (recent x86) you have 9+9+9+9+12. The algorithm is the same. This should make this clear:

So map CR3 at
tmp, and get
tmp[(virtaddr >> (9+9+9+12)) & 0x1FF]. Map this at
tmp and get
tmp[(virtaddr >> (9+9+12)) & 0x1FF] etc. This did not changed ever since paging was introduced (only the number of bits used).
Cheers,
bzt