Статьи Галерея Форум Чат Файлы HowTo Ссылки Поиск
Текущее время: 19 сен 2019, 10:32




Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: вставки на ASN'е
СообщениеДобавлено: 27 сен 2003, 02:37 

Нужно в сишную программу сделать вставку на ASM'е
Пытаюсь сделать так:

Somefunction(){
....
asm
{
movl %eax,%ebx
}
...
}
В итоге parse error
Что делать???


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 27 сен 2003, 03:20 
See info gcc.

Also look at headers in /usr/include/asm/ or /usr/src/linux/include/asm/


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 27 сен 2003, 19:49 
Посмотрел ... бр
вот для примера
#define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq) \
do { \
int dummy; \
asm("1: movl (%1),%%eax;" \
"movl %%eax,%%edx;" \
"andl %2,%%edx;" \
"btsl $0x1,%%edx;" \
"adcl $0x0,%%edx;" \
"lock; cmpxchgl %%edx,(%1);" \
"jnz 1b;" \
"cmpb $0x3,%%dl;" \
"sbbl %%eax,%%eax" \
:"=a"(Acq),"=c"(dummy):"c"(GLptr),"i"(~1L):"dx"); \
} while(0)

%1 , %2 очевидно параметры a ,c ; но как полностью расшифровать строчку
:"=a"(Acq),"=c"(dummy):"c"(GLptr),"i"(~1L):"dx");

^ ^ ^ почему в одном случае есть = а в другом нет.

PS Есть ли какая-нибудь дока типа PORTING HOW-TO?


:shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock:


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 27 сен 2003, 20:52 
There was something like assemply howto.

Also look at gcc info page at section gcc extensions.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 17 мар 2004, 01:02 
Неотъемлемая часть форума
Аватара пользователя

У нас с: 08.03.2004
Сообщения: 338
Почти, только =а и =с это не параметры, а вид, в котором хранятся/записываются переменные. На эту тему не могу посоветовать ничего лучше как почитать маны или лучше инфы по инлайн-ассмеблеру в gcc. Здесь описывать всё это тоже не буду - долго занудно и кроме того у меня нет педагогического таланта:D
%-символ, который надо писать перед именами регистров. Но в инлайне нужен двойной % перед регистрами (%%еах). $ - префикс для "непосредственной" переменной ($0x3 - нечто иное как 0х3, а не указатель на память с адресом 0х3, например)
Н/с портирования ИМХО следует хорошо изучить доки по инлайну и всё будет ОК

_________________
Ну какая работа со строками может быть в языке, название которого является не строкой, а символом? (c) Sergue E. Leontiev


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 17 мар 2004, 01:08 
Неотъемлемая часть форума
Аватара пользователя

У нас с: 08.03.2004
Сообщения: 338
Код:
asm (“shrl $8, %0” : “=r” (answer) : “r” (operand) : “cc”);


The keyword asm is followed by a parenthetic expression consisting of sections separated
by colons.The first section contains an assembler instruction and its operands. In
this example, shrl right-shifts the bits in its first operand. Its first operand is represented
by %0. Its second operand is the immediate constant $8.
The second section specifies the outputs.The instruction’s one output will be
placed in the C variable answer, which must be an lvalue.The string “=r” contains an
equals sign indicating an output operand and an r indicating that answer is stored in a
register.
The third section specifies the inputs.The C variable operand specifies the value to
shift.The string “r” indicates that it is stored in a register but omits an equals sign
because it is an input operand, not an output operand.
The fourth section indicates that the instruction changes the value in the condition
code cc register.

_________________
Ну какая работа со строками может быть в языке, название которого является не строкой, а символом? (c) Sergue E. Leontiev


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 17 мар 2004, 01:13 
Неотъемлемая часть форума
Аватара пользователя

У нас с: 08.03.2004
Сообщения: 338
Для output'a могут быть такие флаги:

R General register (EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP)
q General register for data (EAX, EBX, ECX, EDX)
f Floating-point register
t Top floating-point register
u Second-from-top floating-point register
a EAX register
b EBX register
c ECX register
d EDX register
x SSE register (Streaming SIMD Extension register)
y MMX multimedia registers
A An 8-byte value formed from EAX and EDX
D Destination pointer for string operations (EDI)
S Source pointer for string operations (ESI)

За более подробными разъяснениями - info

_________________
Ну какая работа со строками может быть в языке, название которого является не строкой, а символом? (c) Sergue E. Leontiev


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 17 мар 2004, 14:47 
Интересующийся
Аватара пользователя

У нас с: 25.02.2004
Сообщения: 54
А проще никак нельзя!


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 17 мар 2004, 15:30 
Неотъемлемая часть форума
Аватара пользователя

У нас с: 08.03.2004
Сообщения: 338
Scorpion, что именно?

_________________
Ну какая работа со строками может быть в языке, название которого является не строкой, а символом? (c) Sergue E. Leontiev


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 18 мар 2004, 01:09 
Такой подход вполне правильный, так как компилятор
знает какие регистры используются и есть ли "глобальный"
побочный эффект у вставки. Без этой синтаксической
оссобенности компилятору пришлось бы анализировать
ассемблерный код. Похожие оссобенности были, кажется,
и в Watcom C.


Вернуться к началу
  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
[ All resources are available under GNU GPL ] [ Support ] [ Hosted by DataHata | MyCloud.by ] [ Powered by phpBB® Forum Software © phpBB Group ]

LVEE Winter LVEE Rambler's Top100