2015-09-01 4 views
-1

с использованием DJGPP с компилятором gpp и синтаксисом intel
Как передать переменную в встроенную сборку?
ошибка следующим образом:
неопределенной ссылки на `п»

кода:
djgpp gpp pass переменная встроенная сборка

void geninterrupt (int n) { 
     asm("mov al, byte ptr [_n]"); 
     asm("mov byte ptr [genint+1], al"); 
     asm("jmp genint"); 
    asm("genint:"); 
     asm("int 0"); 
} 
+0

Работает ли он с глобальными переменными? – qwertz

ответ

1

DJGPP использует GCC системы ограничения для расширенной ASM.

void geninterrupt (int n) { 
     __asm__ __volatile__("mov byte ptr [genint+1], al\n\t" 
     "genint: int 0" : : "a" (n)); 
} 

Вам нужно будет перечислить скребковые регистры, если прерывание изменится.