old-www/HOWTO/Assembly-HOWTO/index.html

489 lines
6.3 KiB
HTML

<!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
>Leo Noordergraaf</H3
><DIV
CLASS="affiliation"
><SPAN
CLASS="orgname"
>&#13;Linux Assembly
<BR></SPAN
><DIV
CLASS="address"
><P
CLASS="address"
><br>
<TT
CLASS="email"
>&#60;<A
HREF="mailto:lnoor@users.sourceforge.net"
>lnoor@users.sourceforge.net</A
>&#62;</TT
><br>
</P
></DIV
></DIV
><H3
CLASS="author"
><A
NAME="AEN15"
></A
>Konstantin Boldyshev</H3
><DIV
CLASS="affiliation"
><SPAN
CLASS="orgname"
>&#13;Linux Assembly
<BR></SPAN
><DIV
CLASS="address"
><P
CLASS="address"
><br>
<TT
CLASS="email"
>&#60;<A
HREF="mailto:konst@users.sourceforge.net"
>konst@users.sourceforge.net</A
>&#62;</TT
><br>
</P
></DIV
></DIV
><H3
CLASS="author"
><A
NAME="AEN25"
></A
>Francois-Rene Rideau</H3
><DIV
CLASS="affiliation"
><SPAN
CLASS="orgname"
>&#13;Tunes project
<BR></SPAN
><DIV
CLASS="address"
><P
CLASS="address"
><br>
<TT
CLASS="email"
>&#60;<A
HREF="mailto:fare@tunes.org"
>fare@tunes.org</A
>&#62;</TT
><br>
</P
></DIV
></DIV
><P
CLASS="edition"
>0.7&nbsp;Edition </P
><SPAN
CLASS="releaseinfo"
>Version 0.7<BR></SPAN
><P
CLASS="copyright"
><A
HREF="ln44.html"
>Copyright</A
> &copy; 2013 Leo Noordergraaf</P
><P
CLASS="copyright"
><A
HREF="ln44.html"
>Copyright</A
> &copy; 1999-2006 Konstantin Boldyshev</P
><P
CLASS="copyright"
><A
HREF="ln44.html"
>Copyright</A
> &copy; 1996-1999 Francois-Rene Rideau</P
><P
CLASS="pubdate"
>$Date: 2013-03-03 16:47:09 +0100 (Sun, 03 Mar 2013) $<BR></P
><DIV
><DIV
CLASS="abstract"
><A
NAME="AEN49"
></A
><P
></P
><P
>&#13;This is the Linux Assembly HOWTO, version 0.7
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#AEN90"
>Legal Blurb</A
></DT
><DT
>1.2. <A
HREF="introduction.html#AEN98"
>Foreword</A
></DT
><DT
>1.3. <A
HREF="introduction.html#AEN115"
>Contributions</A
></DT
><DT
>1.4. <A
HREF="introduction.html#AEN125"
>Translations</A
></DT
></DL
></DD
><DT
>2. <A
HREF="doyouneed.html"
>Do you need assembly?</A
></DT
><DD
><DL
><DT
>2.1. <A
HREF="x133.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="x832.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#AEN905"
>Pointers</A
></DT
><DT
>7.2. <A
HREF="resources.html#AEN927"
>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"
>&nbsp;</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</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"
>&nbsp;</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Introduction</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>