<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML ><HEAD ><TITLE >Linux Assembly HOWTO</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="NEXT" TITLE="Introduction" HREF="introduction.html"><META NAME="KEYWORD" CONTENT="assembly"><META NAME="KEYWORD" CONTENT="assembler"><META NAME="KEYWORD" CONTENT="asm"><META NAME="KEYWORD" CONTENT="inline"><META NAME="KEYWORD" CONTENT="32-bit"><META NAME="KEYWORD" CONTENT="IA-32"><META NAME="KEYWORD" CONTENT="i386"><META NAME="KEYWORD" CONTENT="x86"><META NAME="KEYWORD" CONTENT="nasm"><META NAME="KEYWORD" CONTENT="gas"><META NAME="KEYWORD" CONTENT="as"><META NAME="KEYWORD" CONTENT="as86"><META NAME="KEYWORD" CONTENT="yasm"><META NAME="KEYWORD" CONTENT="fasm"><META NAME="KEYWORD" CONTENT="shasm"><META NAME="KEYWORD" CONTENT="osimpa"><META NAME="KEYWORD" CONTENT="OS"><META NAME="KEYWORD" CONTENT="Linux"><META NAME="KEYWORD" CONTENT="Unix"><META NAME="KEYWORD" CONTENT="kernel"><META NAME="KEYWORD" CONTENT="system"><META NAME="KEYWORD" CONTENT="libc"><META NAME="KEYWORD" CONTENT="glibc"><META NAME="KEYWORD" CONTENT="system call"><META NAME="KEYWORD" CONTENT="interrupt"><META NAME="KEYWORD" CONTENT="small"><META NAME="KEYWORD" CONTENT="fast"><META NAME="KEYWORD" CONTENT="embedded"><META NAME="KEYWORD" CONTENT="hardware"><META NAME="KEYWORD" CONTENT="port"><META NAME="KEYWORD" CONTENT="macroprocessor"><META NAME="KEYWORD" CONTENT="metaprogramming"><META NAME="KEYWORD" CONTENT="preprocessor"></HEAD ><BODY CLASS="BOOK" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="BOOK" ><A NAME="AEN1" ></A ><DIV CLASS="TITLEPAGE" ><H1 CLASS="TITLE" ><A NAME="AEN2" ></A >Linux Assembly HOWTO</H1 ><H3 CLASS="AUTHOR" ><A NAME="AEN5" ></A >Konstantin Boldyshev</H3 ><DIV CLASS="AFFILIATION" ><SPAN CLASS="ORGNAME" > <A HREF="http://linuxassembly.org" TARGET="_top" > Linux Assembly<A NAME="KONST" ></A ></A > <BR></SPAN ><DIV CLASS="ADDRESS" ><P CLASS="ADDRESS" > <TT CLASS="EMAIL" ><<A HREF="mailto:konst@linuxassembly.org" >konst@linuxassembly.org</A >></TT ><br> </P ></DIV ></DIV ><H3 CLASS="AUTHOR" ><A NAME="AEN14" ></A >Francois-Rene Rideau</H3 ><DIV CLASS="AFFILIATION" ><SPAN CLASS="ORGNAME" > <A HREF="http://tunes.org" TARGET="_top" > Tunes project<A NAME="FARE" ></A ></A > <BR></SPAN ><DIV CLASS="ADDRESS" ><P CLASS="ADDRESS" > <TT CLASS="EMAIL" ><<A HREF="mailto:fare@tunes.org" >fare@tunes.org</A >></TT ><br> </P ></DIV ></DIV ><P CLASS="EDITION" >0.6g Edition </P ><SPAN CLASS="RELEASEINFO" >Version 0.6g<BR></SPAN ><P CLASS="COPYRIGHT" ><A HREF="ln29.html" >Copyright</A > © 1999-2006 Konstantin Boldyshev</P ><P CLASS="COPYRIGHT" ><A HREF="ln29.html" >Copyright</A > © 1996-1999 Francois-Rene Rideau</P ><P CLASS="PUBDATE" >$Date: 2006/02/11 08:26:26 $<BR></P ><DIV ><DIV CLASS="ABSTRACT" ><A NAME="AEN34" ></A ><P ></P ><P >This is the Linux Assembly HOWTO, version 0.6g. This document describes how to program in assembly language using <EM >free</EM > programming tools, focusing on development for or from the Linux Operating System, mostly on IA-32 (i386) platform. Included material may or may not be applicable to other hardware and/or software platforms.</P ><P ></P ></DIV ></DIV ><HR></DIV ><DIV CLASS="TOC" ><DL ><DT ><B >Table of Contents</B ></DT ><DT >1. <A HREF="introduction.html" >Introduction</A ></DT ><DD ><DL ><DT >1.1. <A HREF="introduction.html#AEN75" >Legal Blurb</A ></DT ><DT >1.2. <A HREF="introduction.html#AEN83" >Foreword</A ></DT ><DT >1.3. <A HREF="introduction.html#AEN100" >Contributions</A ></DT ><DT >1.4. <A HREF="introduction.html#AEN111" >Translations</A ></DT ></DL ></DD ><DT >2. <A HREF="doyouneed.html" >Do you need assembly?</A ></DT ><DD ><DL ><DT >2.1. <A HREF="x120.html" >Pros and Cons</A ></DT ><DT >2.2. <A HREF="howtonot.html" >How to NOT use Assembly</A ></DT ><DT >2.3. <A HREF="landa.html" >Linux and assembly</A ></DT ></DL ></DD ><DT >3. <A HREF="assemblers.html" >Assemblers</A ></DT ><DD ><DL ><DT >3.1. <A HREF="gcc.html" >GCC Inline Assembly</A ></DT ><DT >3.2. <A HREF="gas.html" >GAS</A ></DT ><DT >3.3. <A HREF="nasm.html" >NASM</A ></DT ><DT >3.4. <A HREF="other.html" >Other Assemblers</A ></DT ></DL ></DD ><DT >4. <A HREF="metaprogramming.html" >Metaprogramming</A ></DT ><DD ><DL ><DT >4.1. <A HREF="external.html" >External filters</A ></DT ><DT >4.2. <A HREF="meta.html" >Metaprogramming</A ></DT ></DL ></DD ><DT >5. <A HREF="conventions.html" >Calling conventions</A ></DT ><DD ><DL ><DT >5.1. <A HREF="linux.html" >Linux</A ></DT ><DT >5.2. <A HREF="dos.html" >DOS and Windows</A ></DT ><DT >5.3. <A HREF="ownos.html" >Your own OS</A ></DT ></DL ></DD ><DT >6. <A HREF="quickstart.html" >Quick start</A ></DT ><DD ><DL ><DT >6.1. <A HREF="x825.html" >Introduction</A ></DT ><DT >6.2. <A HREF="hello.html" >Hello, world!</A ></DT ><DT >6.3. <A HREF="build.html" >Building an executable</A ></DT ><DT >6.4. <A HREF="mips.html" >MIPS Example</A ></DT ></DL ></DD ><DT >7. <A HREF="resources.html" >Resources</A ></DT ><DD ><DL ><DT >7.1. <A HREF="resources.html#S-RES-URL" >Pointers</A ></DT ><DT >7.2. <A HREF="resources.html#S-RES-LIST" >Mailing list</A ></DT ></DL ></DD ><DT >8. <A HREF="faq.html" >Frequently Asked Questions</A ></DT ><DT >A. <A HREF="history.html" >History</A ></DT ><DT >B. <A HREF="acknowledgements.html" >Acknowledgements</A ></DT ><DT >C. <A HREF="endorsements.html" >Endorsements</A ></DT ><DT >D. <A HREF="fdl.html" >GNU Free Documentation License</A ></DT ></DL ></DIV ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" > </TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" > </TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="introduction.html" ACCESSKEY="N" >Next</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" > </TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" > </TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >Introduction</TD ></TR ></TABLE ></DIV ></BODY ></HTML >