Slashdot Mirror


x86 Assembly on Mac OS X

Quicksilver31337 asks: "I am currently taking an Assembly course which requires that I be able to compile ASM for the intel x86; however, I am stubbornly a Mac user. Having no desire to switch from my Powerbook, what can I do to work with, compile, and run x86 ASM short of running VirtualPC?" While Mac OS X does use gcc and its associated tool-chain, an old Slashdot discussion seems to imply that cross-compiling is better under OpenDarwin than Mac OS X. Has anyone tried cross-compiling under both operating systems? If so, what suggestions on setting up a working tool-chain do you have?

15 of 156 comments (clear)

  1. DOSBox + NASM by Anonymous Coward · · Score: 5, Informative

    Get NASM (Netwide Assembler) and DOSBox or Bochs (x86 emulators).

    1. Re:DOSBox + NASM by fm6 · · Score: 4, Informative
      The Mac version of DOSBox is available here. Also handy for running old DOS games under 32-bit Windows, Linux, and of course Mac.

  2. Emulation or new hardware... by Paladin128 · · Score: 4, Insightful

    Your two choices are emulation (like VirtualPC) or new hardware.

    My advice is go to a computer show, buy an old, fully-functional 386, 486, or Pentium based machine, and install either DOS or Linux or *BSD. You could probably get one for less than $50.

    --
    Lex orandi, lex credendi.
    1. Re:Emulation or new hardware... by tverbeek · · Score: 4, Insightful
      For the love of Turing, get yourself an IA32 box.

      Going to school is supposed to broaden your horizons (or in more mercenary terms: build up your resume), and that's not going to happen if you cling to your PowerBook like a life preserver. In my college years in the neolithic period I got exposed to TRS-80s (Z80 assembly), IBM PCs, DEC VAXen, a *nix box of some kind, and the C64 in my dorm room, and that diversity of experience made me a better geek... the kind who today is comfortable with OS X, MacOS, Windows, Linux, BSD, BeOS, EPOC, PalmOS, and just about anything else I might find in front of me.

      Look, eventually your architecture of choice is going to die off or fade into irrelevancy. (And I'm not saying that because it's an Apple; they'll probably be around in 20 years, but they won't still be using OS X on PPC). You'll have to adapt. So you might as well start making yourself cross-platform now, before you end up as just a one-trick pony.

      --
      http://alternatives.rzero.com/
  3. Choice... by Sparr0 · · Score: 4, Insightful

    #3: get a shell account on an x86 machine.

    1. Re:Choice... by Atzanteol · · Score: 4, Informative

      Like these people:

      http://www.testdrive.hp.com/

      --
      "Ignorance more frequently begets confidence than does knowledge"

      - Charles Darwin
  4. Don't by kalidasa · · Score: 5, Insightful

    I would think that if you want to take an assembly class for a particular architecture, you'd want to know how that architecture REALLY responds: no kind of emulation is going to guarantee you that knowledge. You're being too stubborn; get (or borrow) a cheap beige box to do the assembly work on and just rdc or vnc into it. Then turn around and sell it when you no longer need to do assembly.

  5. Qemu. by drdink · · Score: 4, Interesting
    First, a note to Cliff. Assembly has nothing to do with cross-compiling. When you write assembly for the PowerPC 970, it stays on the PowerPC 970. You can't cross-compile assembly because it is designed for the target platform from the start.

    Now, what I would suggest you do is get a copy of QEMU. I assume you are familiar enough with Terminal and the shell prompt to get it working since you're stepping into the world of assembly, but if all else fails you can get QemuX or some other QEMU GUI off of VersionTracker.

    Depending on what mode you're writing your assembly in, you'll need to install some sort of OS into QEMU. Some candidates are FreeDOS, MS-DOS, or even Linux. Use whatever your class is using. Emulators are very handy for writing assembly because you can debug the program at the "CPU" level, so when your program pukes you can get a better glimpse at what is going on. This is why many developers design inside of VMWare.

    I hope this helps!

    --
    Beware, Nugget is watching... See?
  6. You want QEMU! by Per+Wigren · · Score: 4, Informative

    First, install QEmu. (I prefer to install it through DarwinPorts)

    Then download a x86 Linux Live CD ISO, for example Knoppix.

    Then:
    $ qemu -cdrom knoppix.iso -boot d

    Simple as that. Networking will work out of the box.

    You can also install Debian on a virtual harddrive using:
    $ dd if=/dev/zero of=sarge.hdimage bs=1000000 count=2000
    $ qemu -hda sarge.hdimage -cdrom debian-netinst.iso -boot d

    When installed, start QEmu with:
    $ qemu -hda sarge.hdimage

    Even better, after installation, copy the kernel and the initrd to your Mac (using sftp) and start qemu with:

    $ qemu -hda sarge.hdimage -kernel kernel-file -initrd initrd-file -append "root=/dev/hda1 console=ttyS0,38600" -nographics

    Then you will get the console on a virtual serial port (which is your current terminal window) and it doesn't have to emulate any graphics at all.

    --
    My other account has a 3-digit UID.
  7. Here's my advice, you may hear lots similar by biglig2 · · Score: 5, Funny

    Sweet Baby Jesus and the Orphans, if you don't want to use anything except a Mac, then go on a PowerPC assembler course!

    Dear Auntie Slashdot,

    I'm going on a course to learn how to stab people. But I don't like knives, nasty sharp things, I much prefer my sock full of spagetti. Can you suggest a way I can stab people with a sock full of pasta?

    Also, I don't want to ride a bicycle, any way I can learn how to ride one while on a train?

    etc. etc.

    --
    ~~~~~ BigLig2? You mean there's another one of me?
  8. virtualPC, bochs, qemu, all fine by snorklewacker · · Score: 4, Informative

    This is almost certainly an intro course. He's not writing device drivers, he's going to be writing an implementation of dijkstra's algorithm or binsort or matrix arithmetic or something. I doubt he's going to have to analyze pipeline and branch prediction behavior either. So just throw it into an emulator, it'll be fine.

    Your prof sincerely will NOT CARE that you used virtualPC or whatever, as long as you did the assignment. He WILL care if you're some whiny fanboy who can't stop moaning about how kludgy and crocky the x86 architecture is and how you sing love songs to your powerpc mac every night and how you had to condescend to use an emulator only IF this dinosaur of a professor who stoops so low to use this architecture might deign to look up to your lofty height and permit you to use an emulator blah blah. Just use the damn emulator and hand in the assignment. Chances are he won't notice, and if he does, then go buy a cheap old PC and get on with life.

    --
    I am no longer wasting my time with slashdot
  9. Re:You don't understand the problem by confused+one · · Score: 4, Insightful
    That's funny... we test ALL of our low level code on an emulator BEFORE we try to run it on real hardware. The development platform is Win2k on x86. The emulation is run on the SAME platform. The target is Z80, AVR, PIC, 68040 or PowerPC, depending upon the product in question.

    I'm a professional developers working for a manufacturer of precision instrumentation. I don't see any problems with what he's trying to do. Although, he'd be wise to test it on real hardware before giving it to the prof...

  10. Do what Mac Zealots have always done... by Lead+Butthead · · Score: 4, Funny

    Code the assignment in PPC assembly and hand that in. And insist PPC is a superior architecture to code for...

    --
    ELOI, ELOI, LAMA SABACHTHANI!?
  11. Horse nuggets. by kma · · Score: 5, Informative

    What do you mean, "how that architecture REALLY" responds?" The whole point of an "architecture" is that there can be more than one implementation of said architecture. AMD and Intel provide hardware implementations of the x86; VirtualPC, bochs, et al. provide software implementations of it. Differences amongst those different implementations come down to either unspecified parts of the architecture, or bugs, be those bugs in hardware or software.

    Bochs is every bit as real an implementation of the x86 as a Pentium 4. In the outrageously unlikely event that bochs doesn't run this guy's assembly code correctly, he should report a bug, just as he would do in the even more outrageously unlikely event that an Intel processor runs his code wrong.

  12. My assembly course by generationxyu · · Score: 4, Interesting

    ...was in MIPS. I don't own a MIPS box, nor would it be easy for me to find one. It wasn't expected that we had one. We were expected to use spim/xspim/PCSpim. I ran xspim on my Mac and it was fine. The programs probably ran like a snail crawling through molasses in January in comparison to a real box, but I never noticed -- none of my programs took long enough to execute anyway.

    --
    I mod down pyramid schemes in sigs.