I guess I may as well confess that I wrote the Itanium information in the Debugging Tools for Windows package


A long time ago in a processor architecture far, far away, mikeb commented, "the help file for the Debugging Tools for Windows package has (or maybe "had") really, really good Itanium information in the Debugging Techniques/Processor Architecture section."

I'll take that as a compliment, because I'm the author of that part of the documentation.

The story begins with a "Bluffer's Guide to the Alpha AXP Processor" document that I wrote as a way to capture the information I learned from reading the processor manual. That document led to a little side gig doing brownbags for teams interested in bringing their developers up to speed on this Alpha AXP processor thing. The recently-completed Alpha AXP series was an expansion of that original document.

When the Itanium project started up, Richard Bond taught me the rudimentary elements of Itanium assembly language. As I recall, it happened only by chance: The two of us happened to be in the same meeting room at the same time, and there was some time to spare.

Armed with a very basic understanding of the Itanium, I dove into the official documentation from Intel and emerged with a corresponding "Bluffer's Guide to the Itanium Processor" document. That document served as the basis for the Itanium section in the Debugging Tools for Windows package, and the Itanium series from 2015 was an expansion upon that document.

With two new processor architectures under my belt, I developed a reputation for being "the guy who knows all about these exotic processors." (Where "exotic" has the rather parochial definition of "anything that isn't x86 or x86-64".) When Windows 8 was ported to ARM, people just assumed that I knew ARM assembly language too.

I didn't, but I found the documentation and taught myself. Once you know a few processors, adding another one to your repertoire isn't that hard, assuming it's similar to one you already know.¹

So at this point, I may as well try to live up to my reputation. I have written up series for the other two defunct processors that were at one point officially supported by Windows NT: The MIPS and the PowerPC. They'll show up someday.

¹ This is also why I stick to Germanic languages: Once you know English, German, and Swedish, adding Norwegian to the collection isn't so hard.

Comments (16)
  1. camhusmj38 says:

    I can’t wait to read the PPC and MIPS series.

  2. Antonio Rodríguez says:

    > When Windows 8 was ported to ARM, people just assumed that I knew ARM assembly language too.

    No good deed goes unpunished, it seems…

    I’m looking for the MIPS and PPC series, too. And, if you excuse me for not being in the Suggestion Box, please do another one for ARM, too.

    1. Alex Cohn says:

      I guess the ARM series should wait until it isn’t supported anymore.

  3. Nathaniel Mishkin says:

    Might as well go for a completist reputation and do a guide for the i860 too (even though it doesn’t fall into the “at one point officially supported by Windows NT” category).

    1. If you understand Itanium (or even if you just read Raymond’s series on it), the i860 will be VERY familiar. Itanium was very obviously just an extension/evolution of i860; they’re both VLIW, but the Itanium has massively more and larger registers, and of course the i860 has no concept of bundles. The assembler mnemonics are different, but should be fairly familiar once you figure out the mapping.

      1. Nathaniel Mishkin says:

        Interesting. I’d forgotten (if in fact I ever knew) that the i860 had adopted the VLIW model until I read the i860 Wikipedia article just before making my first comment on this blog post. As it turns out, I was a grad student in the Yale CS Dept. at the time the VLIW concepts were being invented, and although I wasn’t personally involved in the project, several of my friends were, and I worked briefly at Multiflow, a company founded to productize the hardware and software concepts. Alas (or maybe all for the best), the x86 steamroller was unstoppable.

        And while we treading down memory lane and “unique” architectures, how about the Intel 432? :-)

  4. David says:

    I enjoy these delves into the assembly of other processor architectures.

    Since you have experience with several different processors, I’m curious: Are there any features from the other architectures that you’d like to see in x86/x64? Perhaps the “always in 64-bit mode” of the Alpha would remove a whole bunch of headaches from the boot process. The register rotation of the Itanium looks useful (as does the raw quantity!), but I’m not sure how frequently it would be used.

  5. Ray Koopa says:

    I take this opportunity for a very “flattering” comment which sadly just turned out like this because reality sucks so hard.
    I wish I’d ever meet a developer like Raymond IRL, capable of teaching himself, doing documentation how it should be and apparently also coding (at least half) sanely. Even if he’d have the temperament of a thermonuclear device. Better than an idiot screaming at you just because he doesn’t understand you’re doing things with a healthy human mind. Meeting only clodcoders over the last ten years here in Germany made me lose interest in the computer industry.

    1. Zenith says:

      I hear you on that. I do code review for H1Bs. You can correct the same mistake a hundred times and they’ll just keep making it. Teaching them to code is like teaching a dog how to read, a complete and utter farce that only continues because management is insulated from the chaos.

  6. John McCormick says:

    Back when the NT version for PowerPC was under development I was working on the build team for Systems Management Server and was tasked with finding out why the MFC based UI would not work. After some assembly level debugging I found that a register was set according to whether you were in the users exe or the MFC dll and that mechanism didn’t work when you had tables with pointers to functions to call in the exe that were processed by the code in the DLL as the register was set for the DLL. I didn’t know PPC assembly language but as you say if you know one processor you can figure out another.

  7. Seva Alekseyev says:

    Windows CE also supported Hitachi/Renesas SH3 (and ARM, and MIPS…). Just sayin’. :)

    1. I have no SH3 binaries to disassemble and analyze, so just sayin’.

  8. DWalker07 says:

    Speaking of x86-64, I get confused with the naming because the 64-bit architecture is called AMD64 (in the bootup entries inside the Event Log, and in any dump files, for example), on both my Intel and my AMD machines.

    I finally figured out that AMD64 is probably just the name of the architecture.

    1. Jon says:

      > Speaking of x86-64, I get confused with the naming because the 64-bit architecture is called AMD64 on both my Intel and my AMD machines.

      Some history to explain this:

      Intel invented the 32-bit x86 architecture. So it’s often called the i386 architecture after the Intel 80386 chip that introduced it. Or it’s called the i586 architecture if you’re using some of the newer instructions that were introduced in the Intel Pentium chip. AMD and others produced clones of the 386 and 486 chips, and developed chips that could run i586 code. But those Intel-centric names are often used by software developers even though the software runs on chips from AMD and others as well as chips from Intel.

      Then Intel invented a new 64-bit architecture for Itanium, called IA64 (Intel Architecture 64-bit).

      Then AMD invented the 64-bit x86-64 architecture. Since it was only in use by AMD, this was called the AMD64 architecture to distinguish it from Intel’s 64-bit Itanium architecture.

      Then Intel decided to copy the AMD64 architecture but rename it to x86-64. Many software developers decided to continue calling the architecture AMD64 even though the software now runs on chips from Intel as well as chips from AMD. Many people considered it fair that the AMD64 architecture has an AMD-centric name – after all, the architecture was invented by AMD, and the i386 architecture that was invented by Intel had an Intel-centric name. Of course, Intel doesn’t ever use the name AMD64, they use x86-64 and encourage software developers to use that name too,

      1. Yuhong Bao says:

        AMD64 used to be called “AMD x86-64” until just before the Opteron was released.

Comments are closed.

Skip to main content