I am reading the Art Of Assembly, and on page 250 it says:
You can only push the cs register (popping the cs register would create some interesting program flow control problems).
On page 291 it says:
retf: popd cs:ip
As I see it there are two options:
pop cs: ip is allowed, but you shouldn't use it because the ret instruction is shorter.
pop cs:ip isn't allowed, and only the ret instruction can do it.
Also, if call and ret used segmentation in the past, and in modern computers this "hack" isn't used anymore (or used by OS programmers only), does it mean that every CALL we do is a FAR-JUMP?
Do we always push a 32 bit address or NEAR-JUMP still exists?