what is meant by normalization in huge pointers

Posted by wrapperm on Stack Overflow See other posts from Stack Overflow or by wrapperm
Published on 2010-05-20T20:08:53Z Indexed on 2010/05/20 20:10 UTC
Read the original article Hit count: 241

Filed under:
|
|

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 be 0001:0001. While a far pointer could address the absolute address 0x17 with 0000:0017, this is not a valid huge (normalized) pointer because the offset is greater than 0000F.). 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

© Stack Overflow or respective owner

Related posts about c

    Related posts about pointers