Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вставка ASM кода в MinGW 
V
    Опции темы
zedx
Дата 23.3.2010, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 29.11.2007

Репутация: нет
Всего: нет



Взял код из примера:
Код

__attribute__((naked)) void foobar(int a)
{
  asm volatile ("nop; ret r12");
}



...и ошибка:
Код
sudo gcc -o test test.c
test.c:4: warning: ‘naked’ attribute directive ignored
test.c: Assembler messages:
test.c:5: Error: suffix or operands invalid for `ret'


Что не так? И чем ему атрибут ret-а не понравился?
PM MAIL   Вверх
bsa
Дата 23.3.2010, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



zedx, если не секрет, а у операции RET какие могут быть операнды?
PM   Вверх
xvr
Дата 23.3.2010, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(zedx @ 23.3.2010,  11:55)
Взял код из примера:
Код

__attribute__((naked)) void foobar(int a)
{
  asm volatile ("nop; ret r12");
}



...и ошибка:
Код
sudo gcc -o test test.c
test.c:4: warning: ‘naked’ attribute directive ignored


Облом -

Цитата

`naked'
     Use this attribute on the ARM, AVR, C4x and IP2K ports to indicate
     that the specified function does not need prologue/epilogue
     sequences generated by the compiler.  It is up to the programmer
     to provide these sequences.


Цитата

test.c: Assembler messages:
test.c:5: Error: suffix or operands invalid for `ret'

Что не так? И чем ему атрибут ret-а не понравился?
А что такое rl2 в ret?


Это сообщение отредактировал(а) xvr - 23.3.2010, 12:07
PM MAIL   Вверх
bsa
Дата 23.3.2010, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



zedx, и еще. Скажи пожалуйста, зачем тебе это? Тебе не кажется, что секса от этого ассемблера слишком много? Может быть стоит немного подумать и отказаться от него вообще? А если вообще нельзя, то использовать маленькие вставки внутри процедур. Или ты пишешь ядро операционной системы?
PM   Вверх
zedx
Дата 23.3.2010, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 29.11.2007

Репутация: нет
Всего: нет



Цитата(bsa @  23.3.2010,  12:06 Найти цитируемый пост)
 если не секрет, а у операции RET какие могут быть операнды?

Видимо, на AVR архитектуре какие-то могут быть... сорри, взял пример, не поглядевши.
Цитата(xvr @  23.3.2010,  12:06 Найти цитируемый пост)
Облом -

И как быть? Я так понял нас интересует архитектура x86? Может другой компилятор попробовать?
Цитата(bsa @  23.3.2010,  12:07 Найти цитируемый пост)
Скажи пожалуйста, зачем тебе это?

Компилирую своё расширение для php. Ассемблеровский код - 50k строк - перевести его на вменяемый язык не представляется возможным. Под виндой скомпилировал - работает замечательно.
PM MAIL   Вверх
bsa
Дата 23.3.2010, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



zedx, дизассемблировал закрытый код?  smile 

Если на ассемблере написано конечное приложение, то запустить на другой платформе будет очень затруднительно, так как есть привязка к системным вызовам и функциям конкретной ОС.
PM   Вверх
zedx
Дата 23.3.2010, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 29.11.2007

Репутация: нет
Всего: нет



Цитата(bsa @  23.3.2010,  12:55 Найти цитируемый пост)
дизассемблировал закрытый код?

Ага smile
Нет, никаких привязок к системе нету. Алгоритм полностью автономен с кучей арифметических операций внутри (mov,xor, not, imul) - достаточно запустить и забрать результат. Задача только не допустить самодетельности от компилятора, ну и правильно перевести его в AT&T синтаксис (нашёл ta2at - она мне его автоматом почти без ошибок перевела)... 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0471 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.