Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для начинающих > Синтаксическая ошибка при компиляции вставки


Автор: MastEdm 21.4.2009, 21:31
Добрый вечер. Вопрос наверное ламерский, но всё же. Есть простенький код:
Код

#include <stdio.h>
#include <stdint.h>

struct {
    uint16_t limit;
    unsigned long base;
} __attribute__((packed)) idtr;

__asm__("sidt %0" : "=m" (idtr));
unsigned long idt_table = idtr.base;

int main() {

    return 0;
}


Компилирую gcc 4.0.1:

Код

$ gcc idtr.c 
idtr.c:9: error: syntax error before ‘:’ token
idtr.c:10: error: initializer element is not constant


В чем ошибка? 

Спасибо.

Автор: MastEdm 24.4.2009, 22:37
Решил проблему так:

Код

#include <stdio.h>
#include <stdint.h>

struct idtr_t {
   uint16_t limit;
   unsigned long base;
}__attribute__((packed));


unsigned long foo(void) {
  idtr_t idtr;
  __asm__("sidt %0" : "=m" (idtr));
  return idtr.base;
}

int main(void) {
  unsigned long id = foo();
  printf("%08x", id);
  return 0;
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)