DevelSoftware assembler x86-64

DevelSoftware assembler x86-64

assembler x86-64 имеет возможность создавать 16, 32 и 64 битные программы. Ассемблер поддерживает простые и системные инструкции, инструкции математического сопроцессора, а также технологии: MMX, 3DNow!, SSE1, SSE2, SSE3, SSE4A, SSE4.1, SSE4.2, SSE5, AVX. Имеет высокую скорость компиляции.

Содержание

Формат записи инструкций

Используется Intel-синтаксис записи инструкций.

Единственное существенное отличие от формата, принятого в других ассемблерах (MASM, [label_name], а просто label_name означает адрес (то есть порядковый номер) ячейки. Это позволяет обходится без ключевого слова offset. Также в fasm при переопределении размера операнда вместо byte ptr пишется просто byte, вместо word ptrword и т. д. Не позволяется использовать несколько квадратных скобок в одном операнде, таким образом вместо [bx][si] необходимо писать [bx+si]. Эти изменения синтаксиса привели к более унифицированному и лёгкому для прочтения коду.

Пример программы

пример реализации нескольких функций из стандартной библиотеки

; int __cdecl fegetenv(fenv_t * envp);
; int __cdecl feholdexcept(fenv_t * envp);
; int __cdecl fesetenv(const fenv_t * envp);
; int __cdecl feupdateenv(const fenv_t * envp);
 
public _fegetenv
public _feholdexcept
public _fesetenv
public _feupdateenv
 
_fegetenv:
ifdef _BITS64
	mov rax, [rsp + 8]
	fstenv [rax]
else
	mov eax, [esp + 4]
	fstenv [eax]
endif
	xor eax, eax
	ret
 
_feholdexcept:
ifdef _BITS64
	mov rax, [rsp + 8]
	fstenv [rax]
	fnclex
	sub rsp, 8
	fstcw [rsp]
	or byte [rsp], 0x3f
	fldcw [rsp]
	add rsp, 8
else
	mov eax, [esp + 4]
	fstenv [eax]
	fnclex
	sub esp, 4
	fstcw [esp]
	or byte [esp], 0x3f
	fldcw [esp]
	add esp, 4
endif
	xor eax, eax
	ret
 
_fesetenv:
ifdef _BITS64
	mov rax, [rsp + 8]
	fldenv [rax]
else
	mov eax, [esp + 4]
	fldenv [eax]
endif
	xor eax, eax
	ret
 
_feupdateenv:
	fstsw ax
	and ax, 0xff
ifdef _BITS64
	mov rax, [rsp + 8]
	mov [rax + 4], ax
	fldenv [rax]
else
	mov eax, [esp + 4]
	mov [eax + 4], ax
	fldenv [eax]
endif
	xor eax, eax
	ret


Формат выходных файлов

Операционные системы

Игры ⚽ Нужна курсовая?

Полезное


Смотреть что такое "DevelSoftware assembler x86-64" в других словарях:

  • Comparison of assemblers — This is a list of assemblers: computer programs that translate ( assemble ) assembly language source code into binary programs. Contents 1 x86 assemblers 2 Multiple target assemblers 3 Other assemblers …   Wikipedia


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»