<div dir="ltr"><br>A long time ago I learned assembly for 32-bit x86 using Dr. Paul Carter&#39;s PDF.<div><br></div><div>  <a href="http://www.drpaulcarter.com/pcasm/">http://www.drpaulcarter.com/pcasm/</a></div><div><br></div>
<div>At least, that&#39;s my best guess.  I know I learned some, and I know I liked nasm as opposed to gas.  Many people feel that nasm is human friendly, while gas is gcc friendly.</div><div><br></div><div>Once you get used to nasm, it&#39;s pretty easy to learn the gcc extended inline assembly stuff.  I have created a mnemonic device that I find amusing for remembering which way the source and destination operands are placed in AT&amp;T (gas) and Intel (nasm) assembly syntax:</div>
<div><br></div><div>  If you&#39;re going to AT&amp;T, your destination is New Jersey, on the right.</div><div>  If you&#39;re going to Intel, your destination is California, on the left.</div><div><br></div><div>Recently I got bothered that I couldn&#39;t do asm on x86_64, so I tried some stuff and learned about some of the fancy recent Intel features at the same time.  My learning exercises are documented on github.  The AVX stuff is unfinished, since none of the CPUs I have access to have that feature.  The other stuff is believed to work on Mac OS X and Linux.</div>
<div><br></div><div>  <a href="https://github.com/ecashin/low/tree/master/x86_64/popcnt">https://github.com/ecashin/low/tree/master/x86_64/popcnt</a></div><div><br></div><div>-- </div><div>  Ed</div></div>