I guess that will not work: When your "memory map" is just a plain array of uint32 types, then all entries are equal. That is because in Nim by design all elements of an array have the same type, and more importantly, unit32 is just 32 bit, which is used all for storing numbers, there is no bit free to encode type. In Nim you may use objects of different type, maybe object variants, or refs to various object, which you can store inside an array. But that will consume additional memory. Or you may decide to just use a few bits of your uint32 to indicate type, and remaining bits for the numbers. That is a low level hack.
You may know the keyword distinct, it can be used to create distinct types. But I think it does not help you, as an array can only contain one single type.