OSDev.org https://forum.osdev.org/ |
|
C inline assembly question https://forum.osdev.org/viewtopic.php?f=13&t=31440 |
Page 1 of 1 |
Author: | cyanide [ Sun Mar 19, 2017 10:47 am ] |
Post subject: | C inline assembly question |
Hi! I have some trouble with using the inline assembly when writing in c. I have this code: Code: void isr0() { __asm__ ( "pusha\n" "push gs\n" "push fs\n" "push ds\n" "push es\n" "call interrupt_0\n" "pop es\n" "pop ds\n" "pop fs\n" "pop gs\n" "popa\n" "iret\n" ); } void interrupt_0() { print("Divide by 0!\n"); asm("cli"); asm("hlt"); } However, when I try to compile it I get an error: Code: kernel.o:kernel.c:(.text+0x2a9): undefined reference to `gs' kernel.o:kernel.c:(.text+0x2af): undefined reference to `fs' kernel.o:kernel.c:(.text+0x2b5): undefined reference to `ds' kernel.o:kernel.c:(.text+0x2bb): undefined reference to `es' kernel.o:kernel.c:(.text+0x2c0): undefined reference to `interrupt_0' kernel.o:kernel.c:(.text+0x2c6): undefined reference to `es' kernel.o:kernel.c:(.text+0x2cc): undefined reference to `ds' kernel.o:kernel.c:(.text+0x2d2): undefined reference to `fs' kernel.o:kernel.c:(.text+0x2d8): undefined reference to `gs' Can someone please help me with that? |
Author: | mikegonta [ Sun Mar 19, 2017 11:27 am ] |
Post subject: | Re: C inline assembly question |
cyanide wrote: I have some trouble with using the inline assembly when writing in c. To use intel syntax in GCC inline asm you need to use the -masm=intel option when calling GCC.
However, when I try to compile it I get an error: Can someone please help me with that? |
Author: | cyanide [ Sun Mar 19, 2017 11:50 am ] |
Post subject: | Re: C inline assembly question |
Thanks a lot, that helped |
Author: | Octocontrabass [ Sun Mar 19, 2017 12:02 pm ] |
Post subject: | Re: C inline assembly question |
You can't do that in inline assembly. You have to put it in a separate assembly file, or try to figure out how __attribute__ ((interrupt)) works. |
Page 1 of 1 | All times are UTC - 6 hours |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |