Многое можно нафантазировать из названия. На самом деле сегодня речь пойдет о NASM. Почему именно о нем? А вдруг пригодится кому нибудь:)
Вобщем прийдя на пары и обнаружив что лабораторные работы под Ubuntu 64bit не спешат компилироваться я был очень расстроен. Но прийдя домой принялся искать решение. Несмотря на то что совсем недавно "пересел" на Linux я успел подружиться с bash во преки бытующему среди пользователей Windows мнению консоль оказалась очень даже удобным инструментом про реализацию консоли в Win я пожалую промолчу. И так первое что я сделал это полез в Google. Но найти интересующую меня информацию оказалось не так просто. Программирование на Asm под Linux оченб нераспространенное занятие.
Но не смотря на это решение оказалось очень даже простым. Первое что я сделал это открыл консоль.
# man nasm
или
# nasm -h
Несмотря на то что документации там маловато(кстати man происходит от слова manual, если кому интересно) решение было почти найдено. Перед началом программы надо обьявить директиву:
BITS 64
На самом деле nasm не различает регистр если его не попросить так что можно и не строить из себя блондинку))
Тем неменее до компиляции оставался еще один шаг. Все дело в том что для того чтоб скомпилировать код раньше я использовал комманду:
# nasm -f elf lab1.asm
Не особо задумываясь над е значением на самом же деле директива -f задает формат выходного файла в нвшем случае elf. Что естественно предназначается для 32 систем. К сожалению документации по форматам я так и не нашел но благодаря смекалке:
# nasm -f elf64 lab1.asm
Это вобщем то и решило все мои проблемы осталось только слинковать:
ld lab1.o
ну и запустить:
# ./a.out
Не много ли проблем?:) Посмотрим, впереди еще много интересного.
Подписаться на:
Комментарии к сообщению (Atom)
Какая поучительная статья XDDD
ОтветитьУдалить