четвер, 12 травня 2016 р.

Yasm лінкування в masm32

В таких копіляторах як nasm, yasm відсутній компановщик для створення вихідного файлу для виконнаня, можна створити лише obj ( обєктний файл ), от і стала задача використати yasm і скомпілювати все в ОС Windows з використанням masm32:
;compile obj file yasm
; link masm32
; example Hello world test
; yasm -f win32 test.asm
; link test.obj /subsystem:windows /entry:main /libpath:E:\masm32\lib /nodefaultlib kernel32.lib ;user32.lib /largeaddressaware:no
 global _main
extern _ExitProcess@4
extern _MessageBoxA@16 
section .data
title db "Yasm & link", 0
mesaga db "Скомпільовано yasm, зібрано в masm32", 0
section .text
_main:
push 0
push title
push mesaga
push 0
call _MessageBoxA@16
push 0
call _ExitProcess@4

код для простого прикладу і компілюємо:

    yasm -f win32 test.asm
    link test.obj /subsystem:windows /entry:main /libpath:E:\masm32\lib /nodefaultlib kernel32.lib user32.lib /largeaddressaware:no

    Все тепер більше не потрібно тягнути GCC, binutils в Windows, якщо треба щось зібрати в nasm чи yasm.