1
votes

I understand the near jumps that are just offsets with either an immediate value, register, or address. There should be far (absolute addresses) jumps with immediate value, register, or address too right? The far instructions list m16:16, m16:32, and m16:64 but what do these mean? This is on page 853 of the Intel x64 manual.

1

1 Answers

1
votes

It is not the case the "far == absolute"; while all far jumps are absolute, not all absolute jumps are far (see FF /4, call near absolute, optionally indirect).

The far jump is an absolute jump that also writes to cs, the m16 part goes into cs and the other part is the address jumped to. The precise semantics of the far jump are quite complicated.

So the possible jumps are:

          near | far
-----------------------
relative | yes |  no
absolute | yes | yes
indirect | yes | yes