It's usually just a port of an existing compiler to the new system. It's possible to compile code on one machine for another, you know. That's called cross-compiling.
Narue
Bad Cop
15,460 posts since Sep 2004
Reputation Points: 6,464
Solved Threads: 1,401
It just "is"-- all compiling is is translating the higher level code to machine language. That, at heart, is just translation. Any machine can do that.
alc6379
Cookie... That's it
2,820 posts since Dec 2003
Reputation Points: 186
Solved Threads: 147
I think you've got your terminology mixed up. There's compiled on and compiled for. I can have code that's compiled on an AMD64 machine, but it's for a PPC machine.
Like I was mentioning earlier, it's just a matter of knowing how to translate the source code into the machine code that the target processor can read. The translation is a task that any machine can do, because it's just processing one form of input into another form of output. That's what computers do by nature.
Case in point: I've got an old Sparcstation with a 60mhz processor. If I need to compile something for it, rather than wait an hour for something to finish, I can compile it on my Athlon XP system in a fraction of the time. That's because I have appropriate cross-compilers for that platform.
Without getting into the specifics of machine-specific instruction code, the important thing to keep in mind is that one machine can compile code for another system quite easily, because all it compiling is, essentially, is taking one type of input (source code) and outputting it in another form (machine-specific code). There's logic applied to optimize the machine code, but even still, all we're doing is taking an input and translating it to a desired output format.
alc6379
Cookie... That's it
2,820 posts since Dec 2003
Reputation Points: 186
Solved Threads: 147
Ah yeah that's true I suppose, just haven't come by any programs that do that as far as I know, thanks for your replies :)
Glad to help-- if you're really interested in checking out cross-compiling in action, check out NetBSD. They wouldn't have been able to compile everything that they do if not for cross compiling-- it's simply not feasible to compile an entire native OS on and for an Amiga with a 40mhz 68040 processor, when you could do it on a dual Opteron system!
alc6379
Cookie... That's it
2,820 posts since Dec 2003
Reputation Points: 186
Solved Threads: 147