![]() |
|
|
![]()
|
|
| delgado |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 30.10.2011 Репутация: нет Всего: нет |
Всем доброго времени суток.
Я хотел бы познакомится с ассемблером, но по ходу столкнулся с одной проблемой: у меня есть файл primes.s:
В строке 66 по задумке переменная j должна увеличиться на 1, но вместо этого вылетает segmentation fault когда я смотрю этот участок кода под отладчиком и дизассемблирую его, то выходит:
Пожалуйста объясните что здесь делает этот %rip регистр и как сделать так, чтобы адресация была прямой без этого регистра. |
||||
|
|||||
| 500mhz |
|
|||
![]() шайтан ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: 1 Всего: 14 |
может вам начать с 16 разрядных вариантов под мсдос?
-------------------- |
|||
|
||||
| delgado |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 30.10.2011 Репутация: нет Всего: нет |
Линукс как-то ближе ) И мне кажется, что начинать программировать под сегментную модель памяти тяжелее, чем плоскую. С опцией .code16 ассемблируется верно, но мне все таки хочется разобраться что я сделал не так. |
|||
|
||||
| 500mhz |
|
|||
![]() шайтан ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: 1 Всего: 14 |
мне как то непонятно у вас сорец 32 разрадный, а дебуг 64.
а RIP при том что в 64 разрядном варианте все обращения к памяти релативные по rip -------------------- |
|||
|
||||
| delgado |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 30.10.2011 Репутация: нет Всего: нет |
Мне непонятно тоже )
У меня 64 разрядами даже и не пахнет. Все делаю очень просто
Система: Linux 3.0-ARCH x86_64 Intel® Celeron® CPU 2.66GHz Я вот подумал может as по умолчанию в моей системе генерит 64 - битный код? Как тогда можно подавить настройки? |
|||
|
||||
| 500mhz |
|
|||
![]() шайтан ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: 1 Всего: 14 |
что то мне подсказывает что это не 32 разрядный адрес ))) как в прочем и это - movabs 0x208d048900601208,%eax мой вам совет, ставьте fasm под линюх и отладчик с INTEL ситаксисом, отпадет куча вопросов сразу -------------------- |
|||
|
||||
| delgado |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 30.10.2011 Репутация: нет Всего: нет |
Спасибо, кажется разобрался, дело не в as а в системе - по ходу у меня платформа x86-64, ну или система так думает )
Чтоб собрать правильно, нужно ковырять опции as и ld. Жаль fasm в репах к arch нет - придется качнуть отдельно ( Это сообщение отредактировал(а) delgado - 25.11.2011, 22:37 |
|||
|
||||
| 500mhz |
|
|||
![]() шайтан ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: 1 Всего: 14 |
мне вообще не понятно как as что то скомпилировал, он же вроде интел синтакс не понимает
-------------------- |
|||
|
||||
![]()
|
| Правила форума "Asm для начинающих" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm для начинающих | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |