- Как установить yasm windows
- Пакет yasm-1.2.0
- Информация о пакете
- Установка пакета yasm
- Пояснение команд
- Описание пакета
- Yasm Downloads and Releases
- Visual Studio 2010+ Integration
- Visual Studio 2005/2008 Integration
- Nightly Development Snapshots
- Git Repository
- Как установить yasm windows
- MASM, TASM, FASM, NASM под Windows и Linux
- The Yasm Modular Assembler Project
- Key Current User-Visible Features
- Key Internal Features
Как установить yasm windows
Библиотека сайта rus-linux.net
На главную -> MyLDP -> Электронные книги по ОС Linux
Beyond Linux From Scratch. Version 2011-12-30 | ||
Назад | 11. Системные утилиты | Вперед |
Пакет yasm-1.2.0
Пакет yasm является полностью переписанным ассемблером NASM-2.09.10. Он поддерживает наборы инструкций x86 и AMD64, допускает использование синтаксиса ассемблеров NASM и GAS и выдает двоичный код в объектных форматах ELF32 и ELF64.
Известно, что пакет правильно собирается и работает на платформе LFS-7.0.
Информация о пакете
- Загрузка (HTTP): http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz
- Контрольная сумма MD5: 4cfc0686cf5350dd1305c4d905eb55a6
- Размер загружаемого пакета: 1,4 MB
- Оценочный размер требуемого дискового пространства: 41 MB
- Оценочное время сборки: 0,2 SBU
Установка пакета yasm
Установите пакет yasm с помощью следующих команд:
Чтобы проверить результаты, выполните команду make check.
Теперь в роли пользователя root выполните:
Пояснение команд
sed -i ‘s#) ytasm.*#)#’ Makefile.in: Эта команда sed предотвращает сборку 2-х программ (vsyasm и ytasm), которые используются только в Microsoft Windows.
Описание пакета
Установленные программы: yasm
Установленные библиотеки: libyasm.a
Установленные директории: /usr/include/libyasm
портативный ассемблер, перенастраиваемый на различные целевые платформы и поддерживающий наборы команд 86 и AMD64, позволяющий использовать синтаксис ассемблеров NASM и GAS и выдающий двоичные файлы в объектных форматах ELF32 и ELF64
предоставляет все основные функциональные возможности ассемблера yasm, предназначенные для манипулирования машинными инструкциями и конструкциями, используемыми в объектных файлах
Перевод сделан с варианта оригинала, датированного 2007-04-04 20:42:53 +0100
Yasm Downloads and Releases
Release Date: August 10, 2014
- Yasm 1.3.0 Release Notes
- Source .tar.gz
- Win32 VS2010 .zip (for use with VS2010+ on 32-bit Windows)
- Win64 VS2010 .zip (for use with VS2010+ on 64-bit Windows)
- Win32 .exe (for general use on 32-bit Windows)
- Win64 .exe (for general use on 64-bit Windows)
- CygWin32 .exe (for CygWin use)
- DOS .exe (for use on pure DOS or for use with DJGPP)
Visual Studio 2010+ Integration
Download the appropriate VS2010 “vsyasm” zip file above for your system, and follow the readme.txt instructions for integrating yasm into Visual Studio 2010 (later versions are similar). Thanks to Brian Gladman for contributing this!
Visual Studio 2005/2008 Integration
See VisualStudio2005 for detailed instructions on integrating Yasm with Visual Studio 2005 (Visual Studio 2008 is similar).
See Structured Exception Handling (part of the Yasm User’s Manual) for detailed information on using structured exception handling in the Windows x64 environment. Yasm also supports the SAFESEH directive for structured exception handling in the Win32 environment.
Nightly Development Snapshots
A complete build of Yasm is performed daily at 1:20 AM PDT if there are any repository changes since the previous day. The latest snapshot is the most recent available. It is updated at the same time as the daily build. A Windows executable is also built nightly as “yasm-
Git Repository
All Yasm development is taking place using a Git repository. The repository is browseable online.
Yasm’s Git repository is hosted at GitHub and can be checked out with the following command.
Developers can access the tree via SSH using the following command. A developer account must be set up on GitHub with the proper permissions to the yasm project for write access. You may request a developer account by contacting Peter Johnson.
Как установить yasm windows
Yasm – свободный ассемблер, являющийся попыткой полностью переписать ассемблер NASM. Лицензируется под лицензией BSD и в настоящее время развивается Питером Джонсоном и Майклом Ерманом.
Yasm может использоваться попеременно с NASM с последовательными результатами для многих намерений и целей.
Поддерживаемые архитектуры Yasm
Формат выходных файлов Yasm
Yasm поддерживает следующие форматы выходных файлов:
- Binary – бинарные файлы с любой нужной вам структурой;
- COFF – объектные файлы для использования с DJGPP, MS COFF для Win32, MS64 COFF для Win64 (с поддержкой SEH);
- RDOFF2;
- ELF32 и ELF64 – объектные файлы UNIX;
- Mach-O – 32- и 64-битные объектные файлы Mac OS X.
Формат отладочной информации Yasm
Расшифровка Yasm
Название Yasm, особенно в форме акронима, имеет несколько возможных значений, главным образом шуточных:
- Yes, it’s an ASseMbler – Да, это – АССЕМБЛЕР;
- Your fAvorite aSseMbler – Ваш любимый ассемблер;
- Yet Another aSseMbler – Ещё один ассемблер;
- whY An aSseMbler – почему ассемблер?
Преимущества Yasm относительно NASM
- Yasm предлагает поддержку x86-64, которую NASM, возможно, не поддерживает должным образом или не поддерживает полностью. Например, проект Xvid может создать оптимизированный машинный код для x86-64 архитектуры, используя Yasm, но не может сделать так при использовании NASM;
- Будучи более динамичным проектом, Yasm предлагает более прямую поддержку пользователям, которые ищут новые особенности;
- Кроме Intel-синтаксиса, применяемого в NASM, Yasm также поддерживает AT&T-синтаксис, распространённый в UNIX. Yasm построен «модульно», что позволяет легко добавлять новые формы синтаксиса, препроцессоры и т. п..
Неудобства Yasm относительно NASM
- NASM часто использовался и долго избавлялся от ошибок, от версии к версии, в то время как Yasm – активно развивающийся проект и не был отлажен так же, как NASM;
- Из-за быстрого развития, связанного с NASM, ожидаемая документация будет более полной.
MASM, TASM, FASM, NASM под Windows и Linux
В данной статье я хочу рассмотреть вопросы, которые могут возникнуть у человека, приступившего к изучению ассемблера, связанные с установкой различных трансляторов и трансляцией программ под Windows и Linux, а также указать ссылки на ресурсы и книги, посвященные изучению данной темы.
Используется для создания драйверов под Windows.
По ссылке переходим на сайт и скачиваем пакет (masm32v11r.zip). После инсталляции программы на диске создается папка с нашим пакетом C:\masm32. Создадим программу prog11.asm, которая ничего не делает.
Произведём ассемблирование (трансляцию) файла prog11.asm, используя ассемблер с сайта masm32.
Ключ /coff используется здесь для трансляции 32-битных программ.
Линковка производится командой link /subsystem:windows prog11.obj (link /subsystem:console prog11.obj)
Как сказано в Википедии
MASM — один из немногих инструментов разработки Microsoft, для которых не было отдельных 16- и 32-битных версий.
Также ассемблер версии 6. можно взять на сайте Кипа Ирвина kipirvine.com/asm, автора книги «Язык ассемблера для процессоров Intel».
Кстати, вот ссылка на личный сайт Владислава Пирогова, автора книги “Ассемблер для Windows”.
MASM с сайта Microsoft
Далее скачаем MASM (версия 8.0) с сайта Microsoft по ссылке. Загруженный файл носит название «MASMsetup.exe». При запуске этого файла получаем сообщение -«Microsoft Visual C++ Express Edition 2005 required».
Открываем этот файл архиватором (например 7zip). Внутри видим файл setup.exe, извлекаем его, открываем архиватором. Внутри видим два файла vc_masm.msi,vc_masm1.cab. Извлекаем файл vc_masm1.cab, открываем архиватором. Внутри видим файл FL_ml_exe_____X86.3643236F_FC70_11D3_A536_0090278A1BB8. Переименовываем его в файл fl_ml.exe, далее, произведём ассемблирование файла prog11.asm, используя ассемблер fl_ml.exe.
MASM в Visual Studio
Также MASM можно найти в папке с Visual Studio (у меня VS 10) вот здесь: C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\ml.exe.
Для того, чтобы запустить на 32- или 64-разрядной системе и создавать программы, работающие как под 32-, так и под 64-разрядной Windows, подходит MASM32 (ml.exe, fl_ml.exe). Для того, чтобы работать на 32- и 64-разрядных системах и создавать программы, работающие под 64-разрядной Windows, но неработающие под 32-разрядной нужен ассемблер ml64.exe. Лежит в папке C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\amd64 и вот здесь — C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\x86_amd64.
Программный пакет компании Borland, предназначенный для разработки программ на языке ассемблера для архитектуры x86. В настоящее время Borland прекратила распространение своего ассемблера.
Скачать можно, например, здесь. Инсталлятора нет, просто извлекаем программу. Вот исходник из книги Питера Абеля (рис. 3.2) «Язык Ассемблера для IBM PC и программирования».
Выполним ассемблирование (трансляцию) файла abel32.asm.
Корректность работы программы можно проверить, произведя линковку (tlink.exe) объектного файла и запустив полученный файл в отладчике.
Как было сказано выше, MASM можно использовать для работы с 16-битными программами. Выполним ассемблирование (трансляцию) программы abel32.asm с помощью ассемблера MASM:
Ключ /coff здесь не используется.
Линковка производится файлом link16.exe
В статье Криса Касперски «Сравнение ассемблерных трансляторов» написано, что «FASM — неординарный и весьма самобытный, но увы, игрушечный ассемблер. Пригоден для мелких задач типа „hello, world“, вирусов, демок и прочих произведений хакерского творчества.»
Скачаем FASM с официального сайта. Инсталлятора нет, просто извлекаем программу. Откроем fasm editor — C:\fasm\fasmw.exe. В папке C:\fasm\EXAMPLES\HELLO есть файл HELLO.asm.
Откроем файл HELLO.asm из fasmw.exe. Изменим строку include ‘win32ax.inc’ на строку include ‘c:\fasm\INCLUDE\WIN32AX.INC’. Запускаем из меню Run → Run.
Вот ссылки на ресурсы, посвященные FASM:
Для того, использовать FASM в Linux (у меня Ubuntu), скачаем соответствующий дистрибутив (fasm-1.71.60.tgz), распакуем его, в папке у нас будет бинарный файл fasm, копируем этот файл в /usr/local/bin для того, чтобы можно было запускать его из консоли, как любую другую команду.Выполним ассемблирование программы hello.asm из папки fasm/examples/elfexe/hello.asm.
Корректность работы программы можно проверить в отладчике.
Nasm успешно конкурирует со стандартным в Linux- и многих других UNIX-системах ассемблером Gas.
Nasm в Linux можно установить его с помощью менеджера пакетов или из командной строки: в дистрибутиве Debian (Ubuntu) командой apt-get install nasm, в дистрибутивах Fedora, CentOS, RedHat командой yum install nasm.
Создадим программу, которая 5 раз выводит сообщение “Hello”. Пример взят из книги Андрея Викторовича Столярова “Программирование на языке ассемблера NASM для ОС UNIX”. Учебник, а также библиотека “stud_io.inc” есть на личном сайте автора.
Выполним ассемблирование и линковку и запустим файл hello.asm.
Для 64bit необходимо использовать команду nasm -f elf64 hello.asm
NASM для Windows
NASM для Windows можно установить, скачав соответствующий дистрибутив с соответствующего сайта.
Ассемблирование:
nasm -f bin имя_файла.asm -o имя_файла.com
Ссылки на ресурсы, посвященные Nasm:
Стандартный ассемблер практически во всех разновидностях UNIX, в том числе Linux и BSD. Свободная версия этого ассемблера называется GAS (GNU assembler). Позволяет транслировать программы с помощью компилятора GCC.
Из учебников удалось найти только книгу на английском «Programming from the ground up». На русском удалось найти только одну главу из книги С. Зубкова «Assembler для DOS, Windows и UNIX».
Возьмем пример программы, которая ничего не делает, с сайта. Создадим программу gas.s
Выполним ассемблирование (трансляцию), линковку и запуск программы:
Если в данной программе изменить _start на main, то можно выполнить ассемблирование (трансляцию) и линковку компилятором gcc.
Выполним ассемблирование (трансляцию), линковку и запуск программы:
Выводы: если вы изучаете программирование под Windows, то вы можете остановить свой выбор на Masm; Tasm больше не поддерживается, но для обучения по старым классическим учебникам подойдёт.
Под Linux Gas подойдет тем, кто использует GCC, а тем, кому не нравится синтаксис Gas, подойдёт Nasm.
The Yasm Modular Assembler Project
Yasm is a complete rewrite of the NASM assembler under the “new” BSD License (some portions are under other licenses, see COPYING for details).
Yasm currently supports the x86 and AMD64 instruction sets, accepts NASM and GAS assembler syntaxes, outputs binary, ELF32, ELF64, 32 and 64-bit Mach-O, RDOFF2, COFF, Win32, and Win64 object formats, and generates source debugging information in STABS, DWARF 2, and CodeView 8 formats.
Yasm can be easily integrated into Visual Studio 2005/2008 and 2010 for assembly of NASM or GAS syntax code into Win32 or Win64 object files.
Key Current User-Visible Features
- Nearly feature-complete lexing and parsing of NASM syntax.
- Basic support for TASM syntax.
- Nearly feature-complete lexing and parsing of GAS (GNU assembler) syntax.
- AMD64 support (enabled using “BITS 64”, “-m amd64”, or selecting an explicitly 64-bit object format output such as “-f win64” or “-f elf64”)
- 64-bit (and larger) integer constants allowed (including math operations).
- A fast jump size optimizer equivalent to or better than other assemblers’ multi-pass optimizers.
- Support for multiple object formats:
- Binary object file output (NASM style).
- COFF object file output, for use with DJGPP.
- Win32 object file output.
- Win64/AMD64 aka “x64” object file output (supports structured exception handling).
- RDOFF2 object file output.
- ELF32 and ELF64 object file output.
- 32 and 64-bit Mach-O object file output.
- STABS, DWARF2, and CodeView debug formats.
- Portability; currently compilable on:
- UNIX and compatibles (32-bit and 64-bit FreeBSD and Linux tested, GNU configure based autoconfiguration)
- DOS (using DJGPP)
- Windows (using Visual C++ or CygWin).
- Internationalization support via GNU gettext.
Key Internal Features
The core focus of Yasm is not the yasm commandline frontend; rather, it is the Libyasm library and associated loadable modules (see the programmer references for documentation). Libyasm and the modules are intended for reuse in other sorts of programs dealing with code at the assembly level (compilers, debuggers, etc). Someday, libyasm may be packaged separately from the rest of Yasm.
A NASM syntax and GAS syntax recursive-descent parser.
Architecture-specific instruction parsers hand-written for simplicity and size, as well as to make it easy to add additional architectures while retaining the same front-end syntax. The blend of recursive descent for syntax and a hand-written parser for instructions strikes a great balance between the strengths and weaknesses of each approach.
A NASM syntax lexer written in re2c. A highly efficient scanner generator (almost always faster than lex/flex), it’s also very embeddable due to its code generation methodology, allowing a number of re2c scanners to be used in various places in yasm without any worries about naming conflicts.
A GAS syntax lexer written in re2c.
Many of the modular interfaces at least superficially finished. This is still an area that needs a lot of work.
A small set of portable equivalents of useful functions that are standard on some systems (detected via configure), such as the queue(3) set of functions, strdup, strcasecmp, and mergesort.
A decent (and growing) set of assembler test input files to test the entire assembler as well as specific modules.