Intel to ATT Syntax: jmp
Posted: Tue Dec 09, 2008 4:15 pm
I'm trying to convert the following code into a format that GNU as can understand. Here is the source:
and here is my code:
for the life of me, I can't figure out the jmp statement. It gives me a variety of errors depending on what I try, what is shown above gives the error ' Error: junk `:flush' after expression'.
Robert Hollencamp
Code: Select all
[GLOBAL gdt_flush] ; Allows the C code to call gdt_flush().
gdt_flush:
mov eax, [esp+4] ; Get the pointer to the GDT, passed as a parameter.
lgdt [eax] ; Load the new GDT pointer
mov ax, 0x10 ; 0x10 is the offset in the GDT to our data segment
mov ds, ax ; Load all data segment selectors
mov es, ax
mov fs, ax
mov gs, ax
mov ss, ax
jmp 0x08:.flush ; 0x08 is the offset to our code segment: Far jump!
.flush:
ret
Code: Select all
.global gdt_write
gdt_write:
movl 4(%esp), %eax
lgdt (%eax)
mov 0x10, %ax
mov %ax, %ds
mov %ax, %es
mov %ax, %fs
mov %ax, %gs
mov %ax, %ss
jmp 0x08:flush
flush:
ret
Robert Hollencamp