Книга по Ассемблеру вопрос.

Обсуждение различной литературы о Linux

Модератор: Модераторы разделов

Maria von Weber
Сообщения: 8

Книга по Ассемблеру вопрос.

Сообщение Maria von Weber »

Здравствуйте, развейте мои сомнения и подскажите правильно ли я думаю,
у меня процессор Intel core i7 (x64) имеется книга В.И.Юров Assembler 2-издание но она на IA-32, верно же что данная информация и примеры не подойдет под мою архитектуру и так как регистры и команды отличаются или же нет?
Стоит ли искать книгу на архитектуру x86_64 ?

Большое спасибо за внимание!
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 18483
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Книга по Ассемблеру вопрос.

Сообщение Bizdelnick »

x86_64 — расширение старых x86-архитектур, так что все примеры должны работать. Другой вопрос — стоит ли тратить время на изучение старья.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
ormorph
Сообщения: 1770
ОС: Gentoo

Re: Книга по Ассемблеру вопрос.

Сообщение ormorph »

Maria von Weber писал(а):
31.05.2021 17:37
Здравствуйте, развейте мои сомнения и подскажите правильно ли я думаю,
у меня процессор Intel core i7 (x64) имеется книга В.И.Юров Assembler 2-издание но она на IA-32, верно же что данная информация и примеры не подойдет под мою архитектуру и так как регистры и команды отличаются или же нет?
Стоит ли искать книгу на архитектуру x86_64 ?
Там разница не особо отличается. Вполне подойдёт, там разница в разрядности. Обычно для 64 бит регистры начинаются с буквы r(rax, rcx...), ну а команды обычно с окончанием q(movq) - но это зависит от ассемблера который используете.
А вот практикум Юрова в некоторых местах желает лучшего, некоторые примеры не рабочие, много косяков, скорее всего его студенты писали. Для основ вполне подойдёт, но нужно знать что поправить чтобы перенести на 64 бита.
Спасибо сказали:

Аватара пользователя
olecya
Сообщения: 477
ОС: debian, fedora (i3-wm)

Re: Книга по Ассемблеру вопрос.

Сообщение olecya »

ormorph писал(а):
31.05.2021 18:12
Там разница не особо отличается.
Главное отличие в соглашении о передачи параметров не через стек, а через регистры. (для системных вызовов,
конечно ни кто не запрещает любой порядок передачи в пользовательские функции)
Наткнулась как то на записки "старого программиста" где все регистры были
заменены на 64 битные, но прерывание вызывалось не через syscall, а через int $0x80

Код: Выделить всё

man syscall
Оказалось что даже не указывая явно архитектуру сборки компилятор применял все системные вызовы из i386
со всеми их номерами и порядком передачи параметров.

P.S Предвижу возможные возражения. Я тоже написала что за такое надо руки отбивать, ведь серия статей
предназначена была для обучения и меня забанили. :)
Добавлено (20:59):
Maria von Weber писал(а):
31.05.2021 17:37
Стоит ли искать книгу на архитектуру x86_64 ?
Это смотря каким ассемблером вы пользуетесь. По моему есть книга для fasm. Все примеры выполнены в убунте на x86-64
Если нужна могу найти и выложить. Если по gas x86-64 с синтаксисом AT&T, то есть хорошие отрывки из книги которые для начала могут многое прояснить. Могу подобрать ссылки
Добавлено (21:10):
А, забыла сказать, что почти все на английском. И извиняюсь, в книжке используется не fasm, а yasm ассемблер с синтаксисом intel
Последний раз редактировалось olecya 31.05.2021 21:21, всего редактировалось 5 раз.
Спасибо сказали:

Аватара пользователя
ormorph
Сообщения: 1770
ОС: Gentoo

Re: Книга по Ассемблеру вопрос.

Сообщение ormorph »

olecya писала:
31.05.2021 20:53
Наткнулась как то на записки "старого программиста" где все регистры были
заменены на 64 битные, но прерывание вызвалось не через syscall, а через int $0x80
Ну да, скорее всего он сам не пробовал эти примеры воспроизвести на 64 битной системе. Ну и там сохранение в регистры зависит от числа параметров, стек там тоже может использоваться.
Я у Юрова находил реально не рабочие примеры, например сортировка методом Хора, там если ввести в порядке убывания либо возрастания, то сортировка работает, но если ввести белиберду, то белиберда и выходит. Там просто не правильное представление алгоритма, перевели функциональный подход на использование стека, но не разобрались как правильно осуществить рекурсию на асме. Просто упустили важную деталь в работе функций - при возврате необходимо возвращать ещё значения параметров.
Спасибо сказали: