The OpenNET Project / Index page

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

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

"Взаимодействие с ассемблерными вставками" 
Сообщение от MaximZaikin emailИскать по авторуВ закладки(??) on 03-Мрт-05, 16:15  (MSK)
У меня вопрос такой. Например в функцию написанную на С мы встовляем ассемблерную вставку, которая допустим включает мотор дисковода. Вопрос как считать слово st0 и передать его на обработку функции в C ?
  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

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

1. "Взаимодействие с ассемблерными вставками" 
Сообщение от dimus emailИскать по авторуВ закладки(??) on 04-Мрт-05, 12:21  (MSK)
Сделай отдельную функцию на ассемблере, и просто вызывай ее из программы на С. Не используй встроенный ассемблер.
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Взаимодействие с ассемблерными вставками" 
Сообщение от MaximZaikin emailИскать по авторуВ закладки(??) on 04-Мрт-05, 16:01  (MSK)
>Сделай отдельную функцию на ассемблере, и просто вызывай ее из программы на
>С. Не используй встроенный ассемблер.

А как это можно сделать ?


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

3. "Взаимодействие с ассемблерными вставками" 
Сообщение от Soldier Искать по авторуВ закладки(??) on 05-Мрт-05, 12:30  (MSK)
>>Сделай отдельную функцию на ассемблере, и просто вызывай ее из программы на
>>С. Не используй встроенный ассемблер.
>
>А как это можно сделать ?

Линукс, gcc-2.95.4, NASM 0.98.28
1) Файл getst.asm
//=====================
extern _save_st0

global getst0
getst0:
FST QWORD [_save_st0]
ret
//================

Компилировать
nasm -f elf -o getst getst.asm

2) Файл st.c
//=====================
double  _save_st0=0;

extern void getst0();

main() {
printf("1. Before calling getst0. _save_st0=%f\n",_save_st0);
getst0();
printf("1. After calling getst0.  _save_st0=%f\n",_save_st0);
}
//====================
Компилировать
gcc -o st st.c getst.o

Только там везде fstp (сохранить с очисткой стека) используется и st0  всегда пустым будет

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

4. "Взаимодействие с ассемблерными вставками" 
Сообщение от dimus Искать по авторуВ закладки(??) on 05-Мрт-05, 14:41  (MSK)
Так тоже можно, но я име в виду написать на асме вообще всю функцию. Встроенный ассемблер же желательно не использовать вообще из соображений понятности кода и легкости дальнейшего портирования на другие архитектуры.
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


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

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




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

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