<story><title>Assembly Language Programming: Still Relevant Today (2015)</title><url>http://wilsonminesco.com/AssyDefense/</url></story><parent_chain></parent_chain><comment><author>peter_d_sherman</author><text>Excerpt:&lt;p&gt;&amp;quot;Jeff Laughton (Dr Jefyll on the 6502.org forum) says, &amp;quot;I recall hanging out with a programmer pal o&amp;#x27; mine and a younger fella who was in college.  The young fella was complaining, &amp;#x27;We &lt;i&gt;have&lt;/i&gt; to take assembly language,&amp;#x27; and Len corrected him immediately, saying, &amp;#x27;You &lt;i&gt;get&lt;/i&gt; to take assembly language!&amp;#x27;&amp;quot;&lt;p&gt;&amp;lt;g&amp;gt;</text></comment>
<story><title>Assembly Language Programming: Still Relevant Today (2015)</title><url>http://wilsonminesco.com/AssyDefense/</url></story><parent_chain></parent_chain><comment><author>joe_the_user</author><text>&amp;quot;...self-modifying code, [is] sometimes appropriate to solve certain problems that have no other solution, or for improving efficiency, as in double-indirect addressing.&amp;quot;&lt;p&gt;I have read that self-modifying code on the x86 architecture is pretty dangerous at the assembly level.&lt;p&gt;More broadly, this kind of comes back to all the issues in the &amp;quot;C is not a low level language&amp;quot; thread. Some level of assembler certainly gives the programmer as full access to the machine as possible. But naive assembler from the 8086 - 80486 eras is going to be rearranged in a lot of ways in a modern Pentium processor and counting on in-order execution may be a mistake.&lt;p&gt;Edit: at the same time, the modern processor doesn&amp;#x27;t really allow a lower level than assembler normally and the default approach is assuming flat memory but being aware of the pitfalls of multiple caches being involved.</text></comment>