Slashdot Mirror


Learning x86 for Non-x86 Assembler Programmers?

An anonymous reader asks: "I've done assembler for the 6809, 68000, 8085, MIPS and ARM architectures over the years. But - I've never learned assembler for the most common architecture out there. I would like to change that. I can roughly follow my way around x86 disassemblies, but I'm not as good at optimizing/fine tuning bits of assembler because I am not intimately familiar with all of the addressing modes etc. I would like a book that is targetted at people like me. I would like to be able to fine tune, say a blitter in x86 assembler. One thing I do not in a book is something that is trying to teach me assembler programming in general. Most assembler books seem to fall in the latter category. Are there books out there that might prove useful to me?"

64 comments

  1. Brute force it by repvik · · Score: 1, Redundant

    It's simple! Just use a semi-intelligent program to generate random opcodes, and see which ones compile, and which ones actually run!

    Joke aside, what about checking Intel's pages? I seem to remember there were quite a few documents there on assembly programming...

  2. Helpful website by bdash · · Score: 3, Informative

    A website that could come in handy for learning about x86 assembly language is DDJ Microprocessor Center. In specific, the On-line Intel Documentation links are almost invaluable when learning to code for the x86 architecture. Being Intel reference manuals, they tend to cut to the case relativly quickly.

  3. Assembly on a modern proccessor? by DarkVein · · Score: 1, Offtopic

    Assembly on a proccessor that runs 2.5GHz? Isn't that a bit like calculating the trajectory of every piece of dust in a desert in a five mile radius of a nuclear blast, by hand?

    Asm is great to understand, which you already do, and it's essential for certain applications... modern x86 proccessors, however... you don't build modern jets with slide rules "Standard" measurement units... you get caught in the details and lose sight of the project.

    --

    I'm as mimsy as the next borogove but your mome raths are completely outgrabe.

    1. Re:Assembly on a modern proccessor? by repvik · · Score: 1
      There are compelling reasons to use assembler in various situations.
      Granted, you wouldn't write a word processing suite in assembler, but for graphic routines, graphics libraries, maths and 3D processing and similar tasks that use much processing power.
      Take a look at programs like dnetc @ distributed.net. I wonder why it's not programmed in Visual Basic, but actually in assembler (The core, atleast). I'd like to see dnetc and seti@home programmed in a high-level language, and still be efficient.

    2. Re:Assembly on a modern proccessor? by turgid · · Score: 2

      You underestimate the speed gains to be had (up to a factor of 10 in certain cases) by replacing computationally intensive floating point code with SSE or 3DNow! instructions. Assembly Language will always be relevant in these cases. No compiler exists which can exploit SIMD architectures to the full on commodity hardware. http://libsimd.sourceforge.net

    3. Re:Assembly on a modern proccessor? by Your_Mom · · Score: 1

      OK, break out your favorite editor. Write a "Hello World" program in C. Compile, tell the computer to optimize the sh*t out of it. Now, write the same program in ASM. I can guarentee you the ASM version will be about 5x smaller then the compiled one. And Smaller == Faster.

      --
      Objects in the blog are closer then they ap
    4. Re:Assembly on a modern proccessor? by fault0 · · Score: 2

      Actually, with a modern compiler like gcc 3.2, this might not be true anymore. For relatively simple programs like "hello world", many modern compilers can optimize compiled code to the point where there is no difference from writing the program from hand in asm. I've tested this myself with earlier gcc3.x versions (actually, even before 3.0 came out).

      In this age and time, asm is particularily suited to computationally intensive portions of programs. Yes, it's probably not going to be faster if you write the whole thing in asm, but it'll not only be apt to be bug prone, but the development time will likely take longer.

    5. Re:Assembly on a modern proccessor? by cjpez · · Score: 2
      Ah, but can GCC3 compile a binary that takes up only FORTY-FIVE BYTES?

      Didn't think so. :)

    6. Re:Assembly on a modern proccessor? by Your_Mom · · Score: 1

      *bookmark*
      Oh my $DEITY, that is sweet, Thanks for posting that.

      --
      Objects in the blog are closer then they ap
    7. Re:Assembly on a modern proccessor? by Your_Mom · · Score: 3, Interesting
      *points to the 45-byte guy who was here before him*

      That, is why ASM is better then any HLL. I think the best quote I got from one of my Computer Engineering book was (paraphrasing) "Modern compilers with their optimizations are on the road to becoming almost as good as hand writen assembler."

      Now, would I write word processor in ASM? Not bloody likely, HLLs make it much easier to do. But, when you are writing code for some type of embeded system that doesn't have a whopping 2 GHz processor, ASM will beat any HLL hands down. Unfortunately, too many people think ASM is dead, never learn it, write their embedded code in C and when it isn't fast enough, tell their supervisors that it needs a faster processor. Consider this scenario (stolen from one of my profs):

      • Coder writes embedded system in C.
      • Code isn't fast enough makes company buy faster processor
      • Each processor adds $10 to cost of said system.
      • $10 * 1e6 units = $10e6
      As opposed to this
      • Coder writes embedded system in C
      • Code isn't fast enough
      • Company calls in consultant
      • Consultant reads C, looks at the ASM it creates and spends one night tightening the ASM up.
      • Consultant head off to Florida for the rest of the week
      • At the end of the week consultant makes himself looked disheveled and stumbles in saying "It took all week, but here is the code, it will save to $10 per unit"
      • Consultant Charges $2e6, which will the company gladly pays, considering it saves them over $8e6.
      See, knowing ASM and how processor works is a good thing that can make you money (maybe not as much, but still a nice whopping amount for a few days work). ASM is still needed, and anyone who says different, does not understand how computers work.
      --
      Objects in the blog are closer then they ap
    8. Re:Assembly on a modern proccessor? by Anonymous Coward · · Score: 0
      The Intel C Compiler does a pretty fine job, but clearly the compiler won't understand the algorithm as well as the person coding it.

      It's been my observation that you have give a compiler a fighting chance by describing variable properly (appropriate ranges, if something fits in a unsigned 8-bit value describe it as such, not as a signed 32-bit value), and express the algorithm in a way that any parallelism is more apparent.

    9. Re:Assembly on a modern proccessor? by sab39 · · Score: 2

      Every time I see that article I have to point out that it's easy to do much better than that.

      $ ./a.out; echo $?
      42
      $ wc -c a.out
      7 a.out
      $

      Can you guess the contents of a.out?

      ...

      ...

      ...

      $ cat a.out; echo
      exit 42
      $

      (the "; echo" is there because a.out doesn't have a trailing newline - every byte counts!)

      Stuart.

    10. Re:Assembly on a modern proccessor? by oliverthered · · Score: 1

      debug
      A
      xor ax,ax
      ret
      [esc]
      R CX
      3
      N tiny.com
      W
      Q
      tiny.com

      I can make one 3 bytes!

      --
      thank God the internet isn't a human right.
    11. Re:Assembly on a modern proccessor? by turgid · · Score: 1

      Yes, but that's 16-bit 8086 code, not 386 code :-)

    12. Re:Assembly on a modern proccessor? by Anonymous Coward · · Score: 0

      In 32 bits it's either 4 bytes or 3 bytes depending on the mode that the processor is in. so at the very most is 4 bytes.

      What's wrong with 16bit code anyhow? it works just fine for the example.

    13. Re:Assembly on a modern proccessor? by Nighttime · · Score: 1

      That, is why ASM is better then any HLL. I think the best quote I got from one of my Computer Engineering book was (paraphrasing) "Modern compilers with their optimizations are on the road to becoming almost as good as hand writen assembler."

      And if you want the ultimate in hand-written optimisation, check out The Story of Mel.

      Always makes me feel humble every time I read it

      --
      I've got a fever and the only prescription is more COBOL.
    14. Re:Assembly on a modern proccessor? by Anonymous Coward · · Score: 0

      Sometimes you might need to know assembler as part of writing a compiler or a jit.

      Brendan

    15. Re:Assembly on a modern proccessor? by cjpez · · Score: 2
      Of course, there's always this to worry about:

      $ wc -c /bin/bash
      530392 /bin/bash

      Which kind of defeats the purpose. :)

    16. Re:Assembly on a modern proccessor? by sab39 · · Score: 2

      I don't see why you have to worry about that. The article was about minimizing the size of the executable file itself on disk, not in memory (otherwise some of the last few optimizations would be counterproductive: one of them increases the amount of memory requested in order to reuse a particular byte).

      If the size of bash is going to be counted towards my seven-byte program, you'll have to count the size of the kernel towards his 45-byter. Sure, I still lose because bash+kernel+7 is greater than kernel+45, but at least the ratio isn't so bad as bash+7 vs 45 ;) (besides, I claim I could probably find a combination of kernel and shell which total smaller than the linux kernel, and on which "exit 42" would still work, but his 45-byter is x86-linux specific)

    17. Re:Assembly on a modern proccessor? by cjpez · · Score: 2
      The article was about minimizing the size of the executable file itself on disk
      Correct. And whenever you run a shell script, the executable you're running is actually the interpreter. You could take that 45-byte executable from the link and run it (theoretically) on any Linux kernel that supports ELF. The "exit 42" script will only work on systems which have a shell which contains instructions capable of parsing the string "exit 42." Shell scripts aren't executables, and I feel that as such they should have certain handicaps placed on them when involving themselves in ridiculous contests such as these. :) It's really a matter of apples and oranges. The kicker, as we pedantically load the programs:
      $ /lib/ld-linux.so.2 ./a.out.bin; echo $?
      42
      $ /lib/ld-linux.so.2 ./a.out.sh; echo $?
      ./a.out.sh: error while loading shared libraries: ./a.out.sh: file too short
      :)
    18. Re:Assembly on a modern proccessor? by cjpez · · Score: 2
      Oh, I should have added for completeness' sake:
      $ /lib/ld-linux.so.2 /bin/bash ./exit.sh; echo $?
      42
    19. Re:Assembly on a modern proccessor? by rhost89 · · Score: 1

      you find someplace that will give me $2e6 for tightening up asm, and you got yourself a programmer.

      --
      I will bend your mind with my spoon
  4. Wednesday by undeg+chwech · · Score: 2, Informative

    How about the book that was reviewed here on Wednesday?

    1. Re:Wednesday by drinkypoo · · Score: 2

      That book would be crappy to learn x86 programming from without an instructor. You'd be much better off almost anything else.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
  5. Intel's pages by oliverthered · · Score: 2, Informative

    Thats a great suggestion, all the low level documenation is downloadable from Intel's site in PDF format.
    You can also request a free CD with everything you'd need on it.

    AMD also have documentation up on there site and I think the x86-64 documentation is also available for free on a CD.

    --
    thank God the internet isn't a human right.
  6. Too many aspect by e8johan · · Score: 3, Insightful

    I would not recommend anyone to optimize modern x86 asm by hand. If you know your way around disassembled code you know enough to find any (rare) compiler mistakes. Any other operation is usually done better by a compiler. (Please don't yell at me with small, hand optimized special cases, compilers do a good job today if your application isn't very special.)
    If you would try to hand optimize asm code for a modern cpu you must concider many issues, among them the reordering of instruction in the processor, the different layouts of the pipelines in different processor models (even intels differ to other intels), cache effects (I suppose that you must link everything statically and control where in memory your code will end up)...
    You must also unroll loops, change the access patterns to 2D data structures to improve cache performance, avoid inner loop data dependencies, etc. It is simply too much to handle by hand.
    As you probably know a higher level language such as C/C++ and don't write a highly optimized operating system (or work without an OS) you do not need, and should not want to, optimize your asm code by hand!

    1. Re:Too many aspect by Usquebaugh · · Score: 2

      Must be a troll

      Look asm is not needed to write M$ apps. It is needed for highly computative tasks. While Fortran does a good job in most cases sometimes it needs hand crafted asm to get the job done in time. When all you have is a hammer everything looks like a nail.

    2. Re:Too many aspect by Anonymous Coward · · Score: 0
      (rare) compiler mistakes

      As someone who has dug up and reported several compiler bugs to Intel and Microsoft, I don't think this problem is as rare as you'd like to imagine. Sure in most cases you probably won't notice, but if you have one of these corner cases you can get into a lot of trouble.

      Bugs in the code optimizer can be very subtle, and very difficult to debug.

    3. Re:Too many aspect by ZeLonewolf · · Score: 1

      Uhmmm...

      Judging by the variety of platforms the poster has coded for, I would say it's likely that most of his assembler is done on EMBEDDED platforms, where assembly language IS still used fairly often and where optimizations WOULD come in handy.

      --
      "If at first you don't succeed, lower your standards."
  7. proccessor that runs 2.5GHz in 640MB ram by oliverthered · · Score: 1

    Is equivelent to a 250Mhz processor with 128MB of ram, running only code writen in ASM.

    ASM can often make applications hundreds of time faster so you 2.5Ghz processor running Joes bloaty crapware is like my P100 running ollies carefully crafted and optimized assembler.

    --
    thank God the internet isn't a human right.
    1. Re:proccessor that runs 2.5GHz in 640MB ram by Electrum · · Score: 4, Interesting

      Check out MenuetOS, "a fully 32 bit assembly written, graphical OS for asm programming, distributed under General Public License". My friend joked that it ran faster under VMware than Windows does natively.

  8. First, get the reference books by cookd · · Score: 5, Informative

    Shh! It's a secret, but Intel offers 4 very nice books at a great price: free.

    They aren't tutorials, so there isn't the same hand-holding that you would get in a book from Barnes & Noble, but they explain things well enough that a seasoned assembly programmer should be able to follow with no problem at all. I think they are exactly what you want.

    --
    Time flies like an arrow. Fruit flies like a banana.
  9. Re:What ? by pong · · Score: 0, Redundant

    Yeah! Soup nazi!

    An old time favorite :-)

  10. Zen of Assembly Language by LordNimon · · Score: 3, Informative
    Michael Abrash's The Zen of Assembly Language.

    I'm surprised no one has mentioned this book already, because it's exactly what you're looking for. The only problem is that it's dated - it considers the 80386 to be a new processor. There was a time when no self-respecting assembly programmer would be caught dead without it. Alas, I sold mine a couple years ago, since I already learned everything I could from it.

    The only problem is that it (like all of Abrash's books) has been out of print for a long time, and so it will be very hard to find.

    --
    And the men who hold high places must be the ones who start
    To mold a new reality... closer to the heart
    1. Re:Zen of Assembly Language by xagon7 · · Score: 1

      The full text can be found in the "Graphics Programming Black Book" CD, so I am sure you can find it "somewhere" in electronic format.

    2. Re:Zen of Assembly Language by CMUMikey · · Score: 1

      Much (possibly all) of this book is available as the first half of the Graphics Programming Black Book which is available online at http://planetmirror.com.au/pub/gpbb/, and elsewhere. I have to agree that even though the book is dated on architecture, it is extremely worthwhile to read if you are a programmer of any sort and especially if you are an assembly programmer.

    3. Re:Zen of Assembly Language by chanio · · Score: 0

      You are GREAT!
      Thank you.

      --
      Rwe obliged 2 save our future by choosing:O3 hole-greenhouse effect instead of accepting everydays gossip-nonsense chat?
  11. Micheal Abrash by Lando · · Score: 2
    Zen of assembly programming, might be worth checking out... However books/articles are pretty much out of print..

    Most recent printing would be in Graphics programming black book, but that too has lapsed out of print.

    Slashdot article a while ago linked to a download of the complete text, ie Slashdot, but doesn't seem to link there anymore, perhaps someone else would have an idea where the find the download.

    --
    /* TODO: Spawn child process, interest child in technology, have child write a new sig */
    1. Re:Micheal Abrash by Anonymous Coward · · Score: 0

      gzip'd pdf files are at

      http://gpbb.dk.eu.org:81/

      BTW, I found this by using your ddj link via
      http://web.archive.org

  12. It's all in the blend... by Black+Parrot · · Score: 2, Funny


    So you've been doing assembly for well-designed modern architectures and now you want to learn it for that bit of kludgery we call "x86"? My advice is to run your brain through a kitchen blender and then pour it back into your head. The x86 architecture may start making sense after that.

    --
    Sheesh, evil *and* a jerk. -- Jade
    1. Re:It's all in the blend... by turgid · · Score: 1

      I agree with your post, but in seriousness, the 80386 architecture will also make sense if you previously used an 8080, 8085 or Z80. Am I showing my age?

    2. Re:It's all in the blend... by Anonymous Coward · · Score: 0
      Am I showing my age?

      Probably, you started coding in the early to mid 80's right?

      I started with the 6502 in 1982, and by 84 was working on 8080,8085,Z80 code. Doing x86 from around 86/87. All these assembly code work from the same set of premises, sure they add richer registers and instructions, but once you understand one they all have the same common structure.

      The 68K was very clean, but Motorola did everything backward (endians/operands). The 8086 was a huge cluster-fuck, but nobody (except NASA perhaps) has to target this anymore, do they?

      For most non-kernel situations segmentation is all but irrelevant on the current x86, on AMD's X86-64 its nearly completely gone.

      As for "blitting", surely the Video/DirectX drivers and cards deal with this, we're not dealing with the Amiga/Atari's anymore?

  13. Zen of Code Optimization by mlflegel · · Score: 1

    Someone mentioned "Zen of Assembly Programming" by Michael Abrash. I can recommend "Zen of Code Optimization", also by Michael Abrash. The latter book might be more to your taste, since it focuses on the fine-tuning rather than assembly language itself.

    However, the book is somewhat outdated since it only includes processors up to the Pentium I w/o MMX.

    On the other hand, today's processors are so advanced at doing their own optimization (out-of-order execution, branch prediction, R-OPs, and whatnot), and the different processors do it so differently (AMD vs. Intel) that hand-optimization has far less impact than in the olden days. So you might want to consider if you want to do fine-tuning, except for the obvious (unrolling loops, quadword-aligning your data, to name two things). Also, I think a far greater speed-up can be accomplished by optimizing the algorithm you use. Putting some thought into the algorithm can do wonders, and Abrash agrees with me in "Zen of Code Optimization".

    HTH,
    Michael

  14. For Linux by cjpez · · Score: 4, Informative

    If you're in Linuxland, you might find linuxassembly.org helpful. I've done some assembly before (only a semester's worth, though), and the site was rather useful to me. If you've never done x86, though, there might not be enough there for you . . .

  15. You mean "assembly"? by 0x0d0a · · Score: 1, Troll

    One assembles assembly with an assembler.

    You don't code in "assembler" language, you code in "assembly" language.

    1. Re:You mean "assembly"? by pete-classic · · Score: 2

      I don't know why but old-school guys (like my Dad) talk about "writing in assembler."

      -Peter

    2. Re:You mean "assembly"? by macemoneta · · Score: 2

      For the same reason you "code in C" or "code in Pascal" or "code in BASIC". The common use terminology has always (well, for the last 30 years) been to code in the . So you "code in assembler".

      --

      Can You Say Linux? I Knew That You Could.

  16. It's a wonder than Linux will sneeze on it... by Futurepower(R) · · Score: 2


    "Of course, half of the values in this file violate some part of the ELF standard, and it's a wonder than Linux will even consent to sneeze on it, much less give it a process ID. This is not the sort of program to which one would normally be willing to confess authorship."

    LOL. This guy should edit everyone else's documentation. A good quick quide to the mechanics of getting started with ASM.

  17. The Visible Computer/286/386/486/... by Anonymous Coward · · Score: 1, Informative

    It might not be in print anymore, though I found it invaluable when I had to learn how to debug system BIOSes.

    The Visible series not only teaches assembly, it does so from a novice perspective and includes an emulator to try out the new commands.

  18. fighting chance by oliverthered · · Score: 1

    Your 'fighting chance' is exactly why people should learn ASM so they know whats going on.

    Frequently it's hard to see how a complicated algorythm can be optimised, until you hand convert it to ASM.
    (there's no need to convert to ASM realy, but it's an easy way to make sure you've been thorough)

    --
    thank God the internet isn't a human right.
  19. You sound like a real programmer. by Anonymous Coward · · Score: 1, Funny

    You sound like a real programmer - What are you doing reading slashdot? Slashdot is a site for posers, wannabes, and sysadmins.

  20. Yours is the attitude! by www.sorehands.com · · Score: 1
    LAZY!

    Yours is the attitude that require word processors to need 40MB of ram to run!

  21. cmp Smaller,Faster by MarkusQ · · Score: 4, Insightful

    And Smaller == Faster.

    Not always. While I have been known to drop into assembly, it should never be the first recourse when you are trying to speed things up. If it is, you are likely to miss out on the biggest savings. My rough priority list:

    1. Find some way to quantify how slow/fast the program is, and where. This might mean using a profiler, but it might not. Slice the data various ways (by high level task, by thread, by low level functions, by data structures accessed, by calling patterns, etc.)
    2. Look closely at the places where the largest chunks of objectionable time are being spent. Consider various refactorings, new algorithms, new data structures, etc. Also look at the customers of the routines in question, to see what their real needs are (e.g. is someone sorting a bazillion data items just so they can pluck the smallest/largest from one end of the structure, or are they recomputing a value that seldom changes) and consider other ways to meet these needs.
    3. Make some test modifications, and repeat
    4. Once you have a good understanding of what the program is doing, and are convinced that it is being done in the most way practical, calculate how long this should be taking. If the actual times are far above your informed estimate, then consider hand coding.

    -- MarkusQ

    1. Re:cmp Smaller,Faster by Your_Mom · · Score: 1

      True, While it shouldn't be the first thing you do, Dropping into ASM to check things out /usually/ will yield a performance increase, in my experience. Also, learning assembly and such will show you how to write faster conditional statements (IIRC a "while a != b) yields better non-optimized assembly then "while a = b" [Could be way off my mark on it, but I was taught an example like that])

      As always, YMMV.

      --
      Objects in the blog are closer then they ap
  22. byte aligned function &co by oliverthered · · Score: 1

    Smaller != faster if you generate a page fault because your data or a function weren't byte aligned then you app will run slow as a dog.

    Unrolled loops have a larger footprint but have a smaller execution path.

    It's always a good idea to try and make core functionality run compleatly in the CPU cache, if an unrolled loop takes the application core out of cache then don't unroll it, this is were hand assembled code can outstrip compiled code.

    If you wan't really fast code then write it in decent Java and have a profilling just-in-time compiler.

    --
    thank God the internet isn't a human right.
  23. A more serious answer ... by Ninja+Programmer · · Score: 2, Informative

    Since its optimization you are concerned with I have a few choices you will be interested in:

    1. The Zen of Code Optimization by Michael Abrash.
    2. Agner Fog's Assembly Resources
    3. The Athlon Optimization Guide
    4. Intel's IA32 Optimization Guide
    5. The Aggregate Magic Algorithms

    These sources will give you everything you need to know about code optimization for x86.

  24. x86 Assembly by HailTiki · · Score: 1

    I have done a little programming in x86 assembly and I must say that it has given me an exelent understanding of how the processor works. I think it's very neat. I also find programming in assembly fun! Yeah... I'm crazy. I agree. The person who said put your brain into a blender and pour it back into your head was right... You'd have to be nuts to WANT to program in assembly for normal tasks. Well, I'm nuts =) WEEEEEEE!

    But anywho, to answer your question, use the internet... It's invaluable. Fire up good ol' Google and start searching for x86 assembly or x86 ASM. There are plenty of resources out there including lists of opcodes: what they do, how to use 'em, interrupts, even lists of ASM->machine code translations... Just in case you ever wanted to know that 26D26DFF is shr byte [es:di-1],cl. Take a look at NASM (http://www.cryogen.com/Nasm) if you are looking for an assembler... It's free and works nicely =) There is huge list of interrupts (http://www.pobox.com/~ralf, plus a Windows program, http://www.via.nl/~dms/freeware/rbilviewer/, to read the lists and display them all pretty).

    Hope this helps. (No URLs have been checked, but I doubt they've changed)

    1. Re:x86 Assembly by Anonymous Coward · · Score: 0

      I have done a little programming in x86 assembly and I must say that it has given me an exelent understanding of how the processor works.

      For someone who did little programming in m68k assembly, x86 asm looks like z80a ;-)

  25. best x86 resource by green+pizza · · Score: 3, Interesting

    http://grc.com/smgassembly.htm

    Yep, Gibson writes gui Win32 windows apps in pure x86 assembly. He's nuts, but his apps are tiny and run fast. Lots of good resources there.

  26. Assembly language word processing? by Mr+Z · · Score: 2, Interesting
    Granted, you wouldn't write a word processing suite in assembler,

    Shhhh! Don't tell that to these guys:

    In October 1978 [...] Barnaby began coding WordStar. In four months, Barnaby wrote 137,000 lines of bullet-proof assembly-language code. Rubenstein later checked with some friends from IBM who calculated that Barnaby's output was equal to 42 man years. [link]

    ...or...

    For the past three years, [Jeff Wilson] has been employed by WordPerfect Corporation as a software engineer. While there, he participated in development of WordPerfect for the Apple IIe/IIc computer line. He is currently managing development of WordPerfect for the Atari ST, which should be available shortly after you read this. He programs exclusively in assembly language, and enjoys it! [link]

    Also, from what I understood, the WordPerfect Corporation actually required that all programs be written in assembler. BTW, some more interesing WP history.

    Oh, you mean, you wouldn't use assembler to write a word processing suite nowadays. Ok, I getcha. Yeah, I think you're right. After all, WordPerfect Corp has been out of business for how long? (Well technically, bought out and resold, and resold... They're just a name now.)

    --Joe
  27. Another somewhat outdated book by mdecerbo · · Score: 2
    Yet another book you might check out is Michael Schmitt's "Pentium Processor Optimization Tools", which is a 200-plus page textbook with handy references to instructions, etc. in the appendices.

    It's from 1994 and thus the pre-MMX, pre-P6 world, and it is not especially well written (although not bad), but there is a good discussion of segmentation and of which instructions pair in the Pentium's different pipelines, and it really walks you though optimizing a bunch of code.

    I think some of it might well be useful relative to the ten bucks it's going for on half.com. (Actually, I found it remaindered for $4.00 at the Cambridge, Mass Micro Center, so you may do a little better too.)