Участник:Mityada/Ассемблер — различия между версиями
Mityada (обсуждение | вклад)  (→Компиляция)  | 
				Sementry (обсуждение | вклад)  м (→Компиляция:  http://tsya.ru/)  | 
				||
| (не показано 5 промежуточных версий 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>.  | 
== Текстовый редактор ==  | == Текстовый редактор ==  | ||
| Строка 17: | Строка 18: | ||
=== Windows ===  | === Windows ===  | ||
| − |   section .text  | + |   section .text     ; code section  | 
| − |       global _main  | + |       global _main  ; entry point must be global  | 
| − |   _main:  | + |   _main:            ; entry point  | 
| − |       ret  | + |       ret           ; exit  | 
=== Linux ===  | === Linux ===  | ||
| − |   section .text  | + |   section .text     ; code section  | 
| − |       global _start  | + |       global _start ; entry point must be global  | 
| − |   _start:  | + |   _start:           ; entry point  | 
| − |       mov eax, 1  | + |       mov eax, 1    ; sys_exit system call  | 
| − |       mov ebx, 0  | + |       mov ebx, 0    ; return code 0  | 
| − |       int 0x80  | + |       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 ===  | === Windows ===  | ||
| Строка 54: | Строка 55: | ||
Если вы все сделали правильно, программа должна запускаться и завершаться без ошибки.  | Если вы все сделали правильно, программа должна запускаться и завершаться без ошибки.  | ||
| + | |||
| + | = Полезные ссылки =  | ||
| + | *[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
Запуск
Если вы все сделали правильно, программа должна запускаться и завершаться без ошибки.