The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"about gcc inline assembly"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"about gcc inline assembly" 
Сообщение от Pavel Искать по авторуВ закладки(??) on 06-Май-05, 00:02  (MSK)
есть такой код:
static inline unsigned char inb(unsigned short __port)
{
    unsigned char data;
    __asm__ __volatile__("inb %1,%0" :
"=a" (data) :
"d" (__port) :
"eax","edx"
);
    return data;
}
так вот при компиляции получаю ошибку
fixed or forbidden register 0 (ax) was spilled for class AREG.
если закоментировать
: "eax","edx"
все нормально компилиться.
Наскоко я понимаю в последней части inline asm указываются регистры которые модифицируются асмовыми командами. В данном случае это вроде ax или al.
Вопрос в том почему без : "eax","edx" компилиться, а наоборт нет?
И зачем вообще надо указывать эти регистры?
  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "about gcc inline assembly" 
Сообщение от const emailИскать по авторуВ закладки on 06-Май-05, 07:28  (MSK)
>И зачем вообще надо указывать эти регистры?

  В asm-блоке указываются:
1. блок инструкций
2. выходные регистры
3. входные регистры
4. изменяемые блоком инструкций (1) регистры, кроме выходных (2) (и так ясно, что они изменяются)
  В данном примере регистр edx вообще не изменяется _блоком инструкций_, а eax - выходной. Кстати, вместо %0, %1 лучше использовать настоящие имена: %%eax, %%edx.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "about gcc inline assembly" 
Сообщение от Павел emailИскать по авторуВ закладки(??) on 06-Май-05, 11:53  (MSK)
А не могли бы вы привести пример кода с использование этой фишки.
Я воообще что то не припомню команды который модифицируют левые регистры.
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ]
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру