![]() |
|
Модераторы: xvr |
![]()
|
|
| cupper |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 525 Регистрация: 29.11.2006 Репутация: нет Всего: 1 |
нужно сделать свой системный вызов, в качестве одного из параметров передается указатель на функцию
вот код функции делающей системный вызов
при компиляции получаю
190 строчка это __asm__ __volatile__ ( тип read_proc_t определен так
Я не могу понять чего мне сообщает компилятор. Предполагаю что проблема как раз именно в этом параметре ибо остальные ничего особенного из себя не представляют. Возможно к проблеме имеет отношения ранее возникшая и скорее всего неправильно решенная проблема с объявлением этой функции в другом файле. Эта проблема описана тут http://forum.vingrad.ru/forum/topic-298481.html |
||||||
|
|||||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
cupper,
вы попробуйте постепенно уменьшать число параметров и одновременно смотреть, исчезает ли проблема -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| cupper |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 525 Регистрация: 29.11.2006 Репутация: нет Всего: 1 |
попробовал убрать передачу функции, результат тот же. Щас все параметры убрал оставил только вызов int 0x80 и загрузку результата в регистр eax. Осложняется все тем что до момента ошибки компиляция доходит минут за 25 :( |
|||
|
||||
| cupper |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 525 Регистрация: 29.11.2006 Репутация: нет Всего: 1 |
судя по прошедвешу времени компиляции ошибка миновала, щас блин придеться всетаки поочереди все отключать параметры :(
PS. балин :( я когда убирал передачу указателя на функцию забыл изменить порядок регистров, это имеет значение ? обязательно чтобы параметры передавались через регистры именно в таком порядке ebx, ecx, edx, esi, edi ? или регистры можно в любом порядке загружать ? Это сообщение отредактировал(а) cupper - 24.4.2010, 19:42 |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
cupper,
обязательно Добавлено через 1 минуту и 2 секунды
а что мешает скомпилироать только этот файл? -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| cupper |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 525 Регистрация: 29.11.2006 Репутация: нет Всего: 1 |
мое незнание как это сделать я как то ядро умею компилявить только глобально с помощью make |
|||
|
||||
| cupper |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 525 Регистрация: 29.11.2006 Репутация: нет Всего: 1 |
бейте меня ногами но предложенный способ мне не посилам.
уже хренову кучу времени убил, а только проверил что без
вылазает ошибка, а если убрать все и оставить только вызов int 0x80 то ошибки нет. Два остальных праметра вообще ничем не примечательно, остаеться только что либо эти оба параметра плохие, либо каким то непонятным образом эти совсем обычный параметры ему ненравяться :(
чтобы это проверить у меня йудет еще блин несколько дней :( и даже найдя проблемный параметр... что я с ним буду делать не зная в чем проблема :( Прошу теоретической помощи... что не может быть передано через регистры и почему, может есть где подробная инфа по вставкам __asm__ а то я находил только отрывки и то описывающих только простейшие действия :( ничего применительно к моей проблеме не нашел |
||||
|
|||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
уберите eax из clobbered-list'а
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| cupper |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 525 Регистрация: 29.11.2006 Репутация: нет Всего: 1 |
доктор, а как поможет ампутация руки при спиде ?) PS. ампутация не помогла, слава богу осталась правая Хорошо что мы не врачи )) Это сообщение отредактировал(а) cupper - 27.4.2010, 21:34 |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
http://gcc.gnu.org/ml/gcc-help/2007-04/msg00200.html судя по всему clobbered ist вообще должен быть пуст в данном случае -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| cupper |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 525 Регистрация: 29.11.2006 Репутация: нет Всего: 1 |
в силу слабого знания инглиша я не понял чего там было в переписке сказанно. Я попробую и так сделать. Ме сказала что проблема так же может возникать при попытке положить в регистр 16ричного числа если переменная передаваемая в asm будет с меткой "r". Вопрос PS.
так сразу ошибка
судя по приведенной ссылке совсем не правильно понял что такое клобберед лист, там чета вообще непонятное происходит :( Это сообщение отредактировал(а) cupper - 28.4.2010, 19:43 |
||||||
|
|||||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
cupper,
последнее : не нужно -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| cupper |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 525 Регистрация: 29.11.2006 Репутация: нет Всего: 1 |
спасибо В итоге вот такой вариант скомпилировался
теперь надо еще проверить работает ли он. Еще щас попробую назад пернуть r вместо g и mowl. И кстати а чем данный варинт кода особенен что нужно без клобберед листа ? Это сообщение отредактировал(а) cupper - 29.4.2010, 19:27 |
||||
|
|||||
| MAKCim |
|
||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
юзаются все регистры общего назначения за исключением ebp/esp компилятор не сможет их юзать для чего-то еще и вообще, лучше так
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
![]()
|
| Правила форума "С/С++: Программирование под Unix/Linux" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |