Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как заставить процедуру сохранять содержимое регистров?  (Прочитано 6003 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Daniloff
Помогающий

ru
Offline Offline

« : 18-03-2005 15:18 » 

Из процедуры на Ассемблере вызывается процедура на VC++. Все ничего, но регистры эта процедура похабит. Я могу конечно делать push|pop перед и после вызова, но обращений много, хотелось бы это в сишный код вставить. Вроде был какой-то параметр или прагма saveregs, не поможете найти?
Записан
Serega
Гость
« Ответ #1 : 18-03-2005 15:27 » 

Если процедурка использует регистры, а обратное маловероятно, то без push/pop не обойтись
думаю если такая pragma и есть, то в этом случае push/pop будут вызыватся в процедурке а не с наружи
И зачем тебе это ?
я понимаю если бы ты хотел последовательные вызовы обьединить, тогда можно результаты в регистрах хранить, но такое уже давно реализовано в оптимизаторах, хвостовые вызовы называется, это хорошо описано в Efficient C++ Programming Techniques
Если же у тебя много вызовов одной процедурки, то это либо рекурсия либо обработка массива данных, в обоих случаях данные хранятся в памяти
Записан
Daniloff
Помогающий

ru
Offline Offline

« Ответ #2 : 18-03-2005 16:23 » 

Я смотрел дизасемблированную процедуру на Си. Она в самом начале пользует регистр ECX,
так что вставка _asm push ecx не сработает. Ладно, оставим push перед вызовом, благо не так уж и часто функция вызывается - раз шесть.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 18-03-2005 18:01 » 

Daniloff, рекомендую сделать на asm-е ф-ии-обертки к С-шным. Такая ф-ия должна будут сохранить изменяемые регистры, подготовить параметры и вызвать соответствующую С-шную ф-ию.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines