Conversation

Replying to and
It steals precious bits in the pointers from other use cases to stick an ~16-bit MAC there. Actual size varies quite a bit based on address space size / page table depth, pointer tagging, etc. They had to come up with faster cryptography for generating tiny little MACs for it.
1
1
If you want to use it to implement *signed* integers, that should work fine as long as you don't mind having some of their bits missing and some awkwardness. Hasn't really worked out that well so far as a security feature since it protects exploitation targets, not the sources.