489 lines
6.3 KiB
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"
|
|
> Linux Assembly
|
|
<BR></SPAN
|
|
><DIV
|
|
CLASS="address"
|
|
><P
|
|
CLASS="address"
|
|
><br>
|
|
<TT
|
|
CLASS="email"
|
|
><<A
|
|
HREF="mailto:lnoor@users.sourceforge.net"
|
|
>lnoor@users.sourceforge.net</A
|
|
>></TT
|
|
><br>
|
|
</P
|
|
></DIV
|
|
></DIV
|
|
><H3
|
|
CLASS="author"
|
|
><A
|
|
NAME="AEN15"
|
|
></A
|
|
>Konstantin Boldyshev</H3
|
|
><DIV
|
|
CLASS="affiliation"
|
|
><SPAN
|
|
CLASS="orgname"
|
|
> Linux Assembly
|
|
<BR></SPAN
|
|
><DIV
|
|
CLASS="address"
|
|
><P
|
|
CLASS="address"
|
|
><br>
|
|
<TT
|
|
CLASS="email"
|
|
><<A
|
|
HREF="mailto:konst@users.sourceforge.net"
|
|
>konst@users.sourceforge.net</A
|
|
>></TT
|
|
><br>
|
|
</P
|
|
></DIV
|
|
></DIV
|
|
><H3
|
|
CLASS="author"
|
|
><A
|
|
NAME="AEN25"
|
|
></A
|
|
>Francois-Rene Rideau</H3
|
|
><DIV
|
|
CLASS="affiliation"
|
|
><SPAN
|
|
CLASS="orgname"
|
|
> Tunes project
|
|
<BR></SPAN
|
|
><DIV
|
|
CLASS="address"
|
|
><P
|
|
CLASS="address"
|
|
><br>
|
|
<TT
|
|
CLASS="email"
|
|
><<A
|
|
HREF="mailto:fare@tunes.org"
|
|
>fare@tunes.org</A
|
|
>></TT
|
|
><br>
|
|
</P
|
|
></DIV
|
|
></DIV
|
|
><P
|
|
CLASS="edition"
|
|
>0.7 Edition </P
|
|
><SPAN
|
|
CLASS="releaseinfo"
|
|
>Version 0.7<BR></SPAN
|
|
><P
|
|
CLASS="copyright"
|
|
><A
|
|
HREF="ln44.html"
|
|
>Copyright</A
|
|
> © 2013 Leo Noordergraaf</P
|
|
><P
|
|
CLASS="copyright"
|
|
><A
|
|
HREF="ln44.html"
|
|
>Copyright</A
|
|
> © 1999-2006 Konstantin Boldyshev</P
|
|
><P
|
|
CLASS="copyright"
|
|
><A
|
|
HREF="ln44.html"
|
|
>Copyright</A
|
|
> © 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
|
|
> 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"
|
|
> </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
|
|
> |