64-разрядная версия Linux, язык ассемблера, проблемы? - PullRequest
7 голосов
/ 22 февраля 2009

В настоящее время я изучаю ассемблер. Я использую Газ на Linux Mint (32-разрядная версия). Используя эту книгу: Программирование с нуля .

На компьютере, который я использую, установлен 64-битный процессор AMD Turion , но объем оперативной памяти ограничен 2 ГБ. Я думаю об обновлении моей установки Linux до 64-битной версии Linux Mint, но меня беспокоит то, что книга ориентирована на 32-битную архитектуру x86, и примеры кода не будут работать.

Итак, два вопроса:

  1. Возможно ли возникновение проблем с примерами кода?
  2. Кто-нибудь здесь заметил какие-либо преимущества в использовании 64-битного Linux по сравнению с 32-битным (я видел об этом некоторые потоки в Stack Overflow, но они в основном связаны с Windows Vista и Windows XP).

Ответы [ 3 ]

4 голосов
/ 22 февраля 2009

Ваши примеры кода должны все еще работать. 64-разрядные процессоры и операционные системы все еще могут запускать 32-разрядный код в своего рода «режиме совместимости». Ваши примеры сборки ничем не отличаются. Возможно, вам придется предоставить дополнительную сборочную линию или две (например, .BITS 32), но это все.

Как правило, использование 64-разрядной ОС будет быстрее, чем использование 32-разрядной ОС. x86_64 имеет больше регистров, чем i386. Поскольку вы работаете над сборкой, вы уже знаете, для чего используются регистры ... Наличие большего количества из них означает, что нужно меньше перемещать в стек и из стека (и другой временной памяти), поэтому ваша программа тратит меньше времени на управление данными и больше времени работаю с этими данными.

Редактировать : Чтобы скомпилировать 32-битный код на 64-битном Linux с использованием gas, вы просто используете аргумент командной строки "--32", как отмечено в руководстве по GAS

1 голос
/ 05 апреля 2011

Обычно 32-разрядных достаточно, поэтому используйте только 64-разрядные или более, если вам действительно нужно это. Лучше решить перед программированием, хотите ли вы сделать это как 32-битное приложение или 64-битное приложение, а затем придерживаться его, так как отладка в смешанном режиме может стать хитрой.

1 голос
/ 22 февраля 2009

Даже если вы используете Linux 64bit, на нем можно скомпилировать и запустить 32-битные двоичные файлы. Я не знаю, насколько хорошая поддержка Mint для этого, я полагаю, вы должны проверить.

64-битный ассемблер, однако, не полностью совместим с 32-битным, например, у вас есть другие (более) регистры. Есть некоторые конкретные инструкции, недоступные ни на одной платформе.

Я бы сказал, что переход на 64-битную версию не имеет большого значения. Вы все еще можете написать 32-битную сборку , а затем, возможно, попытаться запустить ее также как 64-битную (не должно быть слишком сложной), как источник еще большего удовольствия от программирования / обучения.

...