Why? [I don't know much about it] Facebook's HipHop JIT transforms PHP to C++ and then they compile it with g++ (or at least that's what they say.) GCC supports ARM already.
For some reason HipHop messed with direct memory locations enough to work only on 64b to start with. If they couldn't make it work cleanly on 32b, ARM is probably also going to be affected.
Who says ARM is going to be 32 bits? Rumors say they're going for 64 bits especially for servers. They will need to surpass 4GB limit on >=8 cores per chip.
I didn't mean the 32/64 as the only difference. They targeted an architecture - it was i86_64/amd64. That affects memory layouts, pointer lengths, available instruction sets, etc. Changing from amd64 -> armel for example will also affect some of those properties.
If you write clean ANSI C code, you're basically compatible by default. If they failed to run on i386, that means they did something special that assumed a different architecture. In that case you're likely to hit the same problem whether they use arm, alpha, infineons, intels, or whatever else.
That doesn't even require a broad definition. From Aho, Sethi, and Ullman: "a compiler is a program that reads a program written in one language - the source language - and translates it into an equivalent program in another language - the target language."
Except that if you interpret that literally, pretty much any program is a compiler. I can translate a text file in the "ASCII language" to the "UTF-8 language" with Notepad++, for instance.
Comments
HipHop is going to get a lot less production-ready.
Why? [I don't know much about it] Facebook's HipHop JIT transforms PHP to C++ and then they compile it with g++ (or at least that's what they say.) GCC supports ARM already.
For some reason HipHop messed with direct memory locations enough to work only on 64b to start with. If they couldn't make it work cleanly on 32b, ARM is probably also going to be affected.
Who says ARM is going to be 32 bits? Rumors say they're going for 64 bits especially for servers. They will need to surpass 4GB limit on >=8 cores per chip.
I didn't mean the 32/64 as the only difference. They targeted an architecture - it was i86_64/amd64. That affects memory layouts, pointer lengths, available instruction sets, etc. Changing from amd64 -> armel for example will also affect some of those properties.
If you write clean ANSI C code, you're basically compatible by default. If they failed to run on i386, that means they did something special that assumed a different architecture. In that case you're likely to hit the same problem whether they use arm, alpha, infineons, intels, or whatever else.
ARM is going for 40-bit extension, to allow addressing 1 TB of RAM.
Source: http://www.eetimes.com/electronics-news/4206387/ARM7-40bit-v...
HipHop is not a JIT, it is an AOT compiler.
While we're correcting people, HipHop isn't an AOT compiler, it is a source code transformer[1].
[1] http://developers.facebook.com/blog/post/358
If your definition of Compiler is broad enough, there's no difference.
That doesn't even require a broad definition. From Aho, Sethi, and Ullman: "a compiler is a program that reads a program written in one language - the source language - and translates it into an equivalent program in another language - the target language."
Except that if you interpret that literally, pretty much any program is a compiler. I can translate a text file in the "ASCII language" to the "UTF-8 language" with Notepad++, for instance.
I don't remember my models of computation class so well, but wouldn't ASCII and UTF-8 be alphabets, not languages?