Skip to main content
Engineering LibreTexts

Forward

  • Page ID
    83001
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    This textbook is a result of my needing to convert a Computer Organization class from MIPS to ARM. Not knowing ARM well enough to proper teach the class, I did what I tend to do, I wrote a book to force myself to learn it. In the process I could not find any good textbooks on ARM Assembly. Most of the ARM Assembly language books I could find were concerned with topics such as accessing the GPIO ports on a Raspberry Pi. These types of topics are very useful to someone who has a basic knowledge of some assembly language, but they are not textbooks that can be used to teach the topics typically covered using assembly language in a course such as Computer Organization, nor did they cover the material a student generally needs to know when implementing material from another class such as Operating Systems, Compilers, or Computer Security. This textbook was written to help fill that gap.

    Another feature that makes this book interesting is that it is the subject of a number of projects from my Computer Architecture class. The Computer Architecture class I teach is a graduate level class, so I believe that students should have to do projects with the class. Coming up with topics is sometimes an issue, and the past several semesters I have given the students the option to create resources to use along with the book. Several have taken up the offer, and there are resources now that include animations, interesting problems, coding style guides, and extra resources with the book. I have found these to be useful, interesting, and well done, and they are included and can be downloaded for free from my web site.

    Another anomaly about this textbook is that it is free. I am not an anti-capitalist, but I believe that capitalism, taken to the extreme, is a very bad idea. Having more is the surest way to dissatisfaction I know of. I believe the secrete to having enough is not having more, but needing less. I am retired, and I teach, and my life is wonderful. I have enough, and I want to help those who do not. Nothing makes me happier than to see downloads of my books from community colleges, where often the students are struggling to reach the first rung in a ladder to a better life. I do suggest a $50.00 donation to the scholarship fund of a community college or local food bank at some point in your life if you find the book useful.

    Finally, the book was rushed, especially in the last few chapters. The chapter on machine code took much longer than I expected due to the lack of good material for it. There is a spread sheet and illustration with the extra resources that I developed that students seem to find useful, but it still took weeks to write. Chapter 11 is marked as TBD. I hope to get back to all of this someday soon and make it nicer, but for now the textbook is usable, and so I am releasing it. I hope you find it useful, and well worth the price!

    • Was this article helpful?