<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">On 10/23/2013 04:33 PM, Ron Frazier
      (ALE) wrote:<br>
    </div>
    <blockquote
      cite="mid:92b7835a-0d13-4390-89b4-cba4e7f8c853@email.android.com"
      type="cite">
      <pre wrap="">Have any of you worked with Intel x86 32 bit assembly on Linux?  How about 64 bit?</pre>
    </blockquote>
    <br>
    Yes, both.&nbsp; It is non-trivial to learn compared to the 6502, which
    I've also programmed, or other (modern) &micro;controllers such as the
    various AVR lines.<br>
    <br>
    <blockquote
      cite="mid:92b7835a-0d13-4390-89b4-cba4e7f8c853@email.android.com"
      type="cite">
      <pre wrap="">Is anyone familiar with HLA, or High Level Assembly, which uses macros (I think) to support constructs like if/then, while, etc?  This is in a book I may buy.</pre>
    </blockquote>
    <br>
    Macro assembly is common in free software assemblers.&nbsp; You may want
    to use NASM (32-bit) or WASM (NWASM?) which is a fork that also
    handles AMD64/EM64T.&nbsp; Also, if you're going to do any long-mode
    programming, you need to be aware of the differences between AMD64
    and EM64T.<br>
    <br>
    Before proceeding at all I would recommend reading Intel's or AMD's
    complete documentation.&nbsp; Not a light reading task; you're talking
    about several very large volumes.&nbsp; Volumes I and II of either set
    are essential.<br>
    <br>
    <blockquote
      cite="mid:92b7835a-0d13-4390-89b4-cba4e7f8c853@email.android.com"
      type="cite">
      <pre wrap="">What would be necessary to use assembly in Linux (Mint / Ubuntu)?  What about HLA?</pre>
    </blockquote>
    <br>
    I wouldn't use an assembler that doesn't permit for macros, period.&nbsp;
    Which assembler you use will depend on what you do; if you're
    writing standalone binary blobs you'll use NASM or similar, if
    you're integrating with or optimizing C code that is compiled with
    gcc then you're going to use gas or similar.&nbsp; If you're using clang,
    then you'll want to use NASM or similar and compile to distinct
    object files, then link them together.<br>
    <br>
    <blockquote
      cite="mid:92b7835a-0d13-4390-89b4-cba4e7f8c853@email.android.com"
      type="cite">
      <pre wrap="">Can you even truly run assembly on a modern OS?  IE, can you even get access to the registers, etc?</pre>
    </blockquote>
    <br>
    Yes, but you must comply with the calling conventions and other
    requirements not only imposed by the platform, but the compiler
    you're using (yes, the rules change based on the compiler you use as
    well as the OS).<br>
    <br>
    &nbsp;&nbsp;&nbsp; &#8212; Mike<br>
    <br>
    <div class="moz-signature">-- <br>
      <table border="0">
        <tbody>
          <tr>
            <td> <br>
            </td>
            <td> Michael B. Trausch<br>
              <br>
              President, <strong>Naunet Corporation</strong><br>
              &#9742; (678) 287-0693 x130 or (855) NAUNET-1 x130<br>
              FAX: (678) 783-7843<br>
            </td>
          </tr>
        </tbody>
      </table>
    </div>
  </body>
</html>