Google
 
   
Login
Username:

Password:


Lost Password?

Register now!
Search
Main Menu
top books
Polls
What do you think about php-deluxe.net?
Excellent!
Cool
Hmm..not bad
What the hell is this?
encyclopedia
recommendation
compare webbrowser
Freenet DSL
Who's Online
7 user(s) are online (6 user(s) are browsing encyclopedia)

Members: 0
Guests: 7

more...
browser tip
Unix Befehle
manual of unix befehle
recommendation!
Sponsored
partner

Assembler

: This article is about the category of computer programming tools . See Assembler (disambiguation) for other meanings .


An assembler is a computer program for translating assembly language — essentially, a mnemonic representation of machine language — into object code. A cross assembler (see cross compiler) produces code for one type of processor, but runs on another.

As well as translating assembly instruction mnemonics into Opcodes, assemblers provide the ability to use symbolic names for memory locations (saving tedious calculations and manually updating addresses when a program is slightly modified), and macro facilities for performing textual substitution — typically used to encode common short sequences of instructions to run inline instead of in a Subroutine.

Assemblers are far simpler to write than Compilers for high-level languages, and have been available since the 1950s. Modern assemblers, especially for RISC based architectures, such as MIPS architecture, Sun SPARC and HP PA-RISC, optimize instruction scheduling to exploit the CPU pipeline efficiently.

High-level assemblers provide high-level-language abstractions such as advanced control structures, high-level procedure/function declarations and invocations, and high-level abstract data types including structures/records, unions, classes, and sets.

=Assemblers=

Hundreds of assemblers have been written; some notable examples are:

  • [http://plit.de/asem-51/ ASEM-51] - for [http://developer.intel.com/design/mcs51/ Intel MCS-51] microcontrollers family
  • A56 - for Motorola DSP56000 Digital Signal Processors (DSP56k series)
  • *AKI ( AvtoKod Ingenera , or engineer s autocode ) - for Minsk family of computers was a half-step away from assembly languages.
  • [http://john.ccac.rwth-aachen.de:8000/as/ AS Macro Assembler] - cross assembler for a large variety of processors; runs on DOS, Win32, OS/2, and Linux
  • ASCENT (ASsembler for CENTral Processor Unit) - for Control Data Corporation computer systems pre-COMPASS
  • ASPER (ASsembler for PERipheral Processor Units) - for Control Data Corporation computer systems pre-COMPASS
  • C-- - name used by a few languages that bring C language closer to Assembly
  • COMPASS (COMPrehensive ASSembler) - macro assembler for Control Data Corporation CDC 3000 series minicomputers, CDC 6400/CDC 6500/CDC 6600, CDC 7600 and CDC Cyber series supercomputers
  • [http://www.emu8086.com Emu8086] - x86 assembly language and Intel s 8086 microprocessor emulator
  • FAP (FORTRAN Assembly Program) - for mainframes IBM 700/7000 series#Scientific Architecture
  • FASM (Flat Assembler) - for IA-32, IA-64, open source
  • GNU Assembler (GNU Assembler) - for many processors, open source
  • High Level Assembly (High Level Assembler) - for x86, public domain
  • HLASM (High Level Assembler) - for mainframe computer
  • Linoleum programming language - for cross platform use
  • MACRO-11 - for Digital Equipment Corporation PDP-11
  • MACRO-32 - for Digital Equipment Corporation VAX
  • MASM (Macro/MS Assembler) - for x86, from Microsoft
  • MI (Machine Interface) - for AS/400, compile-time intermediate language has many features normally found in high-level languages
  • NASM (Netwide Assembler) - for x86, open source
  • PAL-III - for DEC PDP-8
  • RosASM - 32 bit Assembler; The Bottom Up Assembler, open source GPL
  • Sphinx C-- - mix of Assembly and C, allows combining Assembly commands with C-like structures
  • SSK ( Sistema Simvolicheskogo Kodirovaniya , or System of symbolic coding ) - for Minsk family of computers
  • TASM (Turbo Assembler) - for x86 from Borland
  • Terse (Algebraic Assembly Language) - for x86 from Jim Neil
  • [http://retroforth.org/asmchart/ x86 Assembler Chart] - tries to be fairly complete, shows general lineage
  • On Unix systems, the assembler is traditionally called as (Unix), although it is not a single body of code, being typically written anew for each port. A number of Unix variants use GNU Assembler.

    Within processor groups, each assembler has its own dialect. Sometimes, some assemblers can read another assembler s dialect, for example, TASM can read old MASM code, but not the reverse. FASM and NASM have similar syntax, but each support different macros that could make them difficult to translate to each other. The basics are all the same, but the advanced features will differ.

    Also, assembly can sometimes be portable across different operating systems on the same type of CPU. Calling conventions between operating systems often differ slightly to none at all, and with care it is possible to gain some portability in assembly language, usually by linking with a C library that does not change between operating systems. However, it is not possible to link portably with C libraries that require the caller to use preprocessor macros that may change between operating systems. For example, many things in libc depend on the preprocessor to do OS-specific, C-specific things to the program before compiling. In fact, some functions and symbols are not even guaranteed to exist outside of the preprocessor. Worse, the size and field order of structs, as well as the size of certain typedefs such as off_t, are entirely unavailable in assembly language, and do differ even between versions of Linux, making it impossible to portably call functions in libc other than ones that only take simple integers/pointers as parameters.

    Many people use an emulator to debug assembly-language programs.

    =See also=

    *Compiler *x86 assembly language

    =Related wikis=

  • [http://www.program-transformation.org/ The Program Transformation Wiki]
  • [http://c2.com/cgi/wikiLearningAssemblyLanguage C2: Learning Assembly Language]
  • =External links=

  • [http://www.gnu.org/software/lightning/lightning.html GNU lightning is a library that generates assembly language code at run-time ... ideal for Just-In-Time compilers]
  • [http://linuxassembly.org/ information on assembly programming under different platforms: IA32 (x86), IA64 (Itanium), x86-64, SPARC, Alpha, or whatever platform we find contributors for. ]
  • [http://terse.com/ Terse: Algebraic Assembly Language for x86 ]