title: Assembly executing a long jump with an offset with different syntax
body: <p>I am writing a GDT for a Kernel and all is going well, I'm following this tutorial.</p>
  
  <p><a href="http://www.osdever.net/bkerndev/Docs/gdt.htm" rel="noreferrer">http://www.osdever.net/bkerndev/Docs/gdt.htm</a></p>
  
  <p>When link the C code to the assembly code he uses this piece of code.</p>
  
  <pre><code>; This will set up our new segment registers. We need to do
  ; something special in order to set CS. We do what is called a
  ; far jump. A jump that includes a segment as well as an offset.
  ; This is declared in C as 'extern void gdt_flush();'
  global _gdt_flush     ; Allows the C code to link to this
  extern _gp            ; Says that '_gp' is in another file
  _gdt_flush:
  lgdt [_gp]        ; Load the GDT with our '_gp' which is a special pointer
      mov ax, 0x10      ; 0x10 is the offset in the GDT to our data segment
      mov ds, ax
      mov es, ax
      mov fs, ax
      mov gs, ax
      mov ss, ax
      jmp 0x08:flush2   ; 0x08 is the offset to our code segment: Far jump!
  flush2:
  ret               ; Returns back to the C code!
  </code></pre>
  
  <p>However, my assembly syntax is different here is what I have so far as part of my <code>boot.s</code> file.</p>
  
  <pre><code>.global gdt_flush     /*Allows the C code to link to this*/
  .extern gp            /*Says that '_gp' is in another file*/
  _gdt_flush:
      lgdt gp        /*; Load the GDT with our '_gp' which is a special pointer*/
      mov %ax, 0x10     /* ; 0x10 is the offset in the GDT to our data segment*/
      mov %ds, %ax
      mov %es, %ax
      mov %fs, %ax
      mov %gs, %ax
      mov %ss, %ax
      jmp flush2   /*; 0x08 is the offset to our code segment: Far jump!*/
  flush2:
  ret               /*; Returns back to the C code!*/
  </code></pre>
  
  <p>My question is how do I translate the syntax of this instruction into the format I am using?</p>
  
  <p>His: <code>jmp 0x08:flush2   ; 0x08 is the offset to our code segment: Far jump!</code></p>
  
  <p>Mine: <code>(long l?)jmp ????flush2   /*; 0x08 is the offset to our code segment: Far jump!*/</code></p>