Участник:Mityada/Ассемблер — различия между версиями
Mityada (обсуждение | вклад) (Новая страница: «= Необходимые программы = == Компилятор == Yasm. Качаем отсюда http://yasm.tortall.net/. == Линковщик == === ...») |
Sementry (обсуждение | вклад) м (→Компиляция: http://tsya.ru/) |
||
(не показано 9 промежуточных версий 1 участника) | |||
Строка 2: | Строка 2: | ||
== Компилятор == | == Компилятор == | ||
− | Yasm. Качаем | + | Yasm. Качаем [http://yasm.tortall.net/ отсюда]. |
== Линковщик == | == Линковщик == | ||
=== Windows === | === Windows === | ||
− | <code>link.exe</code> из Microsoft Visual Studio. Лежит в | + | <code>link.exe</code> из Microsoft Visual Studio. Лежит в <code>%Program Files%/Microsoft Visual Studio 10.0/VC/bin/</code>. При запуске может ругаться на нехватку <code>mspdb100.dll</code>, берем из <code>%Program Files%/Microsoft Visual Studio 10.0/Common7/IDE/</code>. |
+ | |||
=== Linux === | === Linux === | ||
− | <code>ld</code> из пакета <code>binutils</code> | + | <code>ld</code> из пакета <code>binutils</code>. |
== Текстовый редактор == | == Текстовый редактор == | ||
Строка 15: | Строка 16: | ||
= Простейшая программа = | = Простейшая программа = | ||
− | == Windows == | + | === Windows === |
+ | |||
+ | section .text ; code section | ||
+ | global _main ; entry point must be global | ||
+ | |||
+ | _main: ; entry point | ||
+ | ret ; exit | ||
+ | |||
+ | === Linux === | ||
+ | |||
+ | section .text ; code section | ||
+ | global _start ; entry point must be global | ||
+ | |||
+ | _start: ; entry point | ||
+ | mov eax, 1 ; sys_exit system call | ||
+ | mov ebx, 0 ; return code 0 | ||
+ | int 0x80 ; call kernel | ||
+ | |||
+ | = Компиляция = | ||
− | + | После компиляции у вас должен получиться [http://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BD%D1%8B%D0%B9_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C объектный файл]. | |
− | |||
− | + | === Windows === | |
− | + | yasm -f win32 test.asm | |
+ | |||
+ | === Linux === | ||
+ | yasm -f elf32 test.asm | ||
+ | |||
+ | = Линковка = | ||
+ | |||
+ | === Windows === | ||
+ | link.exe /subsystem:console /entry:main test.obj | ||
+ | |||
+ | === Linux === | ||
+ | ld -o test test.o | ||
− | = | + | = Запуск = |
− | + | Если вы все сделали правильно, программа должна запускаться и завершаться без ошибки. | |
− | |||
− | + | = Полезные ссылки = | |
− | + | *[http://www.tortall.net/projects/yasm/manual/html/manual.html Yasm User Manual] | |
− | + | *[http://en.wikipedia.org/wiki/X86_assembly_language x86 assembly language] | |
− | + | *[http://en.wikibooks.org/wiki/X86_Assembly x86 assembly] | |
+ | *[http://google.com Google] |
Текущая версия на 10:17, 3 марта 2012
Содержание
Необходимые программы
Компилятор
Yasm. Качаем отсюда.
Линковщик
Windows
link.exe
из Microsoft Visual Studio. Лежит в %Program Files%/Microsoft Visual Studio 10.0/VC/bin/
. При запуске может ругаться на нехватку mspdb100.dll
, берем из %Program Files%/Microsoft Visual Studio 10.0/Common7/IDE/
.
Linux
ld
из пакета binutils
.
Текстовый редактор
На ваш вкус и цвет.
Простейшая программа
Windows
section .text ; code section global _main ; entry point must be global _main: ; entry point ret ; exit
Linux
section .text ; code section global _start ; entry point must be global _start: ; entry point mov eax, 1 ; sys_exit system call mov ebx, 0 ; return code 0 int 0x80 ; call kernel
Компиляция
После компиляции у вас должен получиться объектный файл.
Windows
yasm -f win32 test.asm
Linux
yasm -f elf32 test.asm
Линковка
Windows
link.exe /subsystem:console /entry:main test.obj
Linux
ld -o test test.o
Запуск
Если вы все сделали правильно, программа должна запускаться и завершаться без ошибки.