The OpenNET Project / Index page

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

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

"gcc + gas = segmentation fault"
Сообщение от dimus Искать по авторуВ закладки(ok) on 12-Июл-04, 13:24  (MSK)
Есть программулька на С и функция на ассемблере, вызываемая из этой
программульки. Если при оформлении фрейма функции я посылаю в стек
pushl ebp
movl  esp,ebp
pushl ecx
pushl edi
то все работает прекрасно, (проценты я здесь не пишу, но они есть
где надо в соответствии с синтаксисом АТиТ)
если же я добавляю любой другой пуш, например
pushl esi
То при выполнении программы вылетает segmentation fault. Не подскажет
ли мне кто-нибудь, чем может быть вызвано такое странное поведение и
как с этим глюком бороться? Я прочитал кучу документации, но нигде
ничего подобного не описывается. Как я понял, почему-то не
распределяется стек под мою функцию, а как установить размеры стека
вручную я найти не смог.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

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

1. "gcc + gas = segmentation fault"
Сообщение от gyn Искать по авторуВ закладки(??) on 12-Июл-04, 14:43  (MSK)
>Есть программулька на С и функция на ассемблере, вызываемая из этой
>программульки. Если при оформлении фрейма функции я посылаю в стек
>pushl ebp
>movl  esp,ebp
>pushl ecx
>pushl edi
>то все работает прекрасно, (проценты я здесь не пишу, но они есть
>
>где надо в соответствии с синтаксисом АТиТ)
>если же я добавляю любой другой пуш, например
>pushl esi
>То при выполнении программы вылетает segmentation fault. Не подскажет
>ли мне кто-нибудь, чем может быть вызвано такое странное поведение и
>как с этим глюком бороться? Я прочитал кучу документации, но нигде
>ничего подобного не описывается. Как я понял, почему-то не
>распределяется стек под мою функцию, а как установить размеры стека
>вручную я найти не смог.


Стека в UNIX более чем достаточно. Проверьте, что есть popl esi перед popl edi

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "gcc + gas = segmentation fault"
Сообщение от dimus Искать по авторуВ закладки(ok) on 23-Июл-04, 14:40  (MSK)
Я все проверил - и все вроде бы ОК. А потом я с нуля переписал функцию
на другом компьютере, и все прекрасно заработало. Я так и не нашел, в чем была ошибка. А на первом компьютере я эту прогу еще не компилировал. Скомпилю - дам постинг. Но за подсказку все равно спасибо.
Кстати, я был поражен скоростью работы функции strlen. Я в тестовых целях написал свой стрлен, где длина определялась так:

movl 8(Кp),Мi
xorl Лx,Лx
xorl Йx,Йx
notl Лx
repe scacb
decl Мi

ну примерно так
так вот, библиотечная strlen работает гораздо быстрее. Хрен знает,
как это удалось. Хотелось бы взглянуть на исходный код, но у себя я его
не нашел. Не знает ли кто-нибудь, где его можно достать?
Заранее спасибо

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "gcc + gas = segmentation fault"
Сообщение от klalafuda emailИскать по авторуВ закладки on 23-Июл-04, 14:43  (MSK)
>так вот, библиотечная strlen работает гораздо быстрее. Хрен знает,
>как это удалось. Хотелось бы взглянуть на исходный код, но у себя
>я его
>не нашел. Не знает ли кто-нибудь, где его можно достать?
>Заранее спасибо

если бы вы еще поделились информацией о своей системе..

// wbr

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "gcc + gas = segmentation fault"
Сообщение от dimus Искать по авторуВ закладки(ok) on 29-Июл-04, 08:04  (MSK)
Slackware 9.1
  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

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




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

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