0x80...00是什么指针

我在看objc源码,在objc-weak.h中有一段注释

// out_of_line_ness field overlaps with the low two bits of inline_referrers[1].
// inline_referrers[1] is a DisguisedPtr of a pointer-aligned address.
// The low two bits of a pointer-aligned DisguisedPtr will always be 0b00
// (disguised nil or 0x80..00) or 0b11 (any other address).
// Therefore out_of_line_ness == 0b10 is used to mark the out-of-line state.

我想知道这里提到的0x80…00是什么指针

我在 stackoverflow上问了同样的问题。点击这里
我自己来回答一下:
其实0x80…00并不特指什么,其实我也不知道是否存在这样的指针。但是注释里提到0x80…00,更多是与nil一块儿提到而已。在DisguisedPtr源码中,生成一个伪指针就是给原指针取负值(涉及到了补码的知识),恰好 nil也就是0x00…00,这个数字的补码是他自己,而0x80…00的补码也是他自己。注释只是告诉大家:这两种特殊的指针也是生效的。