Skip to content
HomeVideosBooks
AllTopicsTrends
BlogsPodcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K
    Cover of ARM system developer's guide

    ARM system developer's guide

    Andrew Sloss, Dominic Symes, Chris Wright · 2004

    Electronics & HardwareSoftware EngineeringSystems & OS
    Open LibraryAmazon
    Stats for nerds
    4recommend
    4mentions
    4people
    2010–2026years
    100% recommend

    Mentions per year

    201020122014201620182020202220242026

    What Hacker News says

    1. rramadassAug 2026
      You might also want to checkout the Assembly books by Larry Pyeatt (ARM only) and Daniel Kusswurm (x86 + ARM).

      Another excellent classic which you should checkout if you are interested in all things ARM is ARM System Developer's Guide: Designing and Optimizing System Software by Sloss, Symes and Wright. It is old and so does not cover newer ARM architectures but will give you a solid foundation for system programming.

      thread
    2. rhexsDec 2016
      The ARM System Developer's Guide is one of the best ARM books I've ever read. Has nothing to do with reverse engineering, but a great ARM reference.

      If you can reverse engineering in X86, a reference for ARM ASM is all you'll need. (could get by with the official docs but this book really is something special)

      You'll weep tears of joy going from X86's nightmarish instruction set to the beauty of RISC ARM!

      thread
    3. syncopateJan 2014
      A good way to learn asm is through books but there are not many for current architectures (especially x64, except the official Intel manuals which are quite good but also hard to read). Nevertheless, there are some on ARM which I can recommend, namely: ARM System Developer's Guide by Sloss, Symes and Wright. ARM Assembly Language by Hohl. ARM SoC Architecture by Furber.

      IDA Pro is the industry standard for reverse engineering but it also is expensive (like USD $2k). There is a free version but it doesn't offer 64bit, so not really an option for modern ObjC or Intel computers. As you've mentioned ObjC chances are you work on OS X. IDA pro is not working well on OS X (the recommended way is to use the Windows version via virtualbox and not the OS X version). Still, Hopper.app is a great alternative on OS X. Not as good as IDA, but it has a Python interface, GDB support, and decompile support for ARM, Intel (and some knowledge regarding Objc). And it's only ~USD$100. [There is also a Windows version of hopper.app but it seems not yet ready to use, as I've only heard bad things about it there so far.]

      thread
    4. pietrofmaggiSep 2010
      Now with a bit more of time, just for sake of completeness (from the ARM's System Developers Guide).

      "If your code uses addition, subtraction, and multiplication then there's no performance difference between signed and unsigned operation. However, there is a difference when it comes to division."

      Consider the following short example that averages two integers:

        int average_v1(int a, int b)
        {
          return (a+b)/2;
        }
      
      This compiles to:

        average_v1
          ADD r0, r0, r1            ; r0 = a+ b
          ADD r0, r0, r0, LSR #31   ; if (r0<0) r0++
          MOV r0, r0, ASR #1        ; r0 = r0 >> 1
          MOV ro, r14               ; return ro
      
      Notice that the compiler adds one to the sum before shifting by right if the sum is negative. In other words it replaces x/2 by the statement:

        (x<0)?((x+1)>>1):(x>>1)
      
      It must do this because x is signed. In C on an ARM target, a divide by two is not a right shift if x is negative. For example, -3 >> 1 = -2 but -3/2 = -1. Division rounds towards zero, but arithmetic right shift rounds towards -inf.

      It is more efficient to use unsigned types for division. The compiler converts unsigned power of two divisions directly to right shifts.

      For this and other fancy ARM insight take a look at the ARM System Developer's Guide, really a nice book: http://www.elsevier.com/wps/find/bookdescription.cws_home/70...

      thread

    Related

    Cover of Designing Embedded Hardware
    2008–2025

    Designing Embedded Hardware

    John Catsoulis
    2 recommend · 5
    Cover of ARM Assembly language
    2014–2020

    ARM Assembly language

    William Hohl
    3 recommend · 4
    Introduction to Embedded SystemsEdward A. Lee
    2019–2026

    Introduction to Embedded Systems

    Edward A. Lee
    3 recommend · 11
    Cover of Modern X86 Assembly Language Programming
    2016–2020

    Modern X86 Assembly Language Programming

    Daniel Kusswurm
    2 recommend · 4
    Cover of Memory systems
    2009–2026

    Memory systems

    Bruce Jacob
    2 recommend · 5
    Cover of Embedded Linux primer
    2017–2023

    Embedded Linux primer

    Christopher Hallinan
    3 recommend · 3
    Cover of ARM system-on-chip architecture
    2009–2026

    ARM system-on-chip architecture

    Stephen B. Furber
    6 recommend · 6
    Computer System DesignMichael J. Flynn
    2017–2026

    Computer System Design

    Michael J. Flynn
    4 recommend · 9