Hi,
I have a lot of confusion on understanding the difference between a "far" pointer and "huge" pointer, searched for it all over in google for a solution, couldnot find one. Can any one explain me the difference between the two. Also, what is the exact normalization concept related to huge pointers.
Please donot give me the following or any similar answers:
"The only difference between a far pointer and a huge pointer is that a huge pointer is normalized by the compiler. A normalized pointer is one that has as much of the address as possible in the segment, meaning that the offset is never larger than 15. A huge pointer is normalized only when pointer arithmetic is performed on it. It is not normalized when an assignment is made. You can cause it to be normalized without changing the value by incrementing and then decrementing it. The offset must be less than 16 because the segment can represent any value greater than or equal to 16 (e.g. Absolute address
0x17
in a normalized form would be0001:0001
. While a far pointer could address the absolute address0x17
with0000:0017
, this is not a valid huge (normalized) pointer because the offset is greater than0000F
.). Huge pointers can also be incremented and decremented using arithmetic operators, but since they are normalized they will not wrap like far pointers."
Here the normalization concept is not very well explained, or may be I'm unable to understand it very well.
Can anyone try explaining this concept from a beginners point of view.
Thanks, Rahamath