OSDev.org https://forum.osdev.org/ |
|
Inline ASM troubles... [SOLVED] https://forum.osdev.org/viewtopic.php?f=1&t=13639 |
Page 1 of 1 |
Author: | pcmattman [ Sat Apr 07, 2007 10:40 pm ] |
Post subject: | Inline ASM troubles... [SOLVED] |
I have finally got my OS working again Now I'm working on the stdlib for developers, and I've already run into a problem. I'm trying this for my putc function: Code: __asm__ __volatile__ ( "movb %0,%edx" : : "d" ( c ) ); __asm__ __volatile__ ( "movd $0x1,%eax" ); __asm__ __volatile__ ( "int $0x15" ); This is the syscall my operating system supports to handle the same thing as 'putc' in kernel-space. EDX is meant to hold the character. GCC complains with this error message: Code: putc_stdlib.c:5: error: invalid 'asm': operand number missing after %-letter Edit: fixed it: Code: __asm__ __volatile__ ( "movb %0,%%dl" : : "d" ( c ) ); __asm__ __volatile__ ( "movb $0x1,%al" ); __asm__ __volatile__ ( "int $0x15" ); EDIT: 4 years later... wow Check out the inline assembly examples for a much better way to do this kind of thing. Also, the actual problem is in "mov %0, %dl", which should be "mov %0, %%dl" in this context. |
Page 1 of 1 | All times are UTC - 6 hours |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |