Easm

From Wikipedia, the free encyclopedia


The Epsilon Assembler (abbreviated: easm) is an assembler for the x86 architecture of microprocessors. The assembler produces Win32 executables that are compatible with the Microsoft Windows platform (Windows 95 - Windows Vista). As of yet, easm does not support other executable formats; consequently the project is currently constrained to the Windows platform only. This may change with future versions of easm however.

Contents











[edit] Project History

The easm project started development in 2005 as a prototype assembler for a hybrid assembly language. The primary aim of the prototype was for its developer to get a greater understanding of the operation and development of such software, in preparation for the real project. In 2006, work began on the real thing with much of the focus being aimed at creating a very extensible framework, allowing the actual assembler to be created in modular way. Currently easm is still in development as work continues on key language facilities such as conditional and iterative instructions.

[edit] Project Goals

The easm project has three primary goals:

[edit] Minimal Executables

Firstly, easm aims to produce the smallest possible executable, meaning that no unnecessary sections exist and only the sections that are vital are included in an executable - ultimately aiming to reduce the memory footprint and execution time of any application created by easm.

[edit] Extensive Syntax

Secondly, easm aims to fully support all the required elements of a procedural programming language. This includes things such as conditional, arithmetic and iterative constructs, as well as support for functions and local variables.

[edit] Runtime Library

Finally, easm aims to support the invocation of import functions from any number of Dynamic Link Libraries (DLLs). This will provide a runtime library that is entirely dynamic - supporting the first goal of reducing the executable size and also creating the ability to call any function from any API that exists within Windows.

[edit] System Architecture

The easm system architecture.

The areas of the system architecture that are coloured purple indicate sections that have been added recently and were not part of the original design of the framework.

[edit] Example: Hello World

subsystem cui

section imports

        from msvcr70.dll import printf using cdecl
        from kernel32.dll import ExitProcess

section code

        call printf ("Hello World!")
        call ExitProcess (00h)

[edit] External links

easm Homepage
easm Forum