This may be a silly question but....in terms of executing byte code on a processor do you think its possible for Sun's MAJC chip to run Self byte code ? Indeed, are there any similarities between the MAJC chip and the Transmeta chip ? I'm sure you can tell, I don't know much about microprocessors :-(
cheers,
Bharat
From: Jecel Assumpcao Jr. [mailto:jecel@merlintec.com] Since the Self group got to define the semantics of the bytecodes, they simply defined that an interrupt can only happen in certain "safe points" (either a non-inlined message send or the backwards jump at the end of a loop with no non-inlined sends). So the Self adaptive compilation can get the same results without strange hardware support.
********************************************************************** This communication is confidential and is intended only for the person to whom it is addressed. If you are not that person you are not permitted to make use of the information and you are requested to notify administrator@commerzbankzge.com immediately that you have received it and then destroy the copy in your possession. Commerzbank AG is regulated by the SFA for the conduct of investment business in the UK. **********************************************************************
Bharat Bedia wrote:
This may be a silly question but....in terms of executing byte code on a processor do you think its possible for Sun's MAJC chip to run Self byte code ? Indeed, are there any similarities between the MAJC chip and the Transmeta chip ? I'm sure you can tell, I don't know much about microprocessors :-(
I guess I'm pretty new to the Self scene, but doesn't Self compile to machine code before execution, rather than interpret bytecodes? The documentation (what little of it there is) isn't completely clear on this point.. Of course, this has very little to do with your question... although bytecodes often contain operations that are "difficult" for hardware to emulate, like a dispatch.
Dobes Vandermeer wrote:
I guess I'm pretty new to the Self scene, but doesn't Self compile to machine code before execution, rather than interpret bytecodes?
Exactly. Though some people (including me) have implemented Self interpreters so that is a valid, but slooooow, alternative.
The documentation (what little of it there is) isn't completely clear on this point..
If you count two PhD thesis, then the documentation on this is actually very good. In fact, the same information is also available in a bunch of papers that were presented mainly at OOPSLA and ECOOP.
Of course, this has very little to do with your question... although bytecodes often contain operations that are "difficult" for hardware to emulate, like a dispatch.
Self is famous for "message passing at the bottom" in contrast to Smalltalk which includes things as variable access and assignment. So a bytecode can only:
- push a literal or "self" - send to top of stack, send to self, resend to self - modify the following bytecode's argument or its resend parent
The second group (which you have correctly identified as difficult) is by far the most common in Self methods.
-- Jecel
Bharat Bedia wrote:
This may be a silly question but....in terms of executing byte code on a processor do you think its possible for Sun's MAJC chip to run Self byte code ?
This is a very good question, and the answer is *yes*.
Indeed, are there any similarities between the MAJC chip and the Transmeta chip ? I'm sure you can tell, I don't know much about microprocessors :-(
From the introduction to MAJC
(http://www.sun.com/microelectronics/MAJC/documentation/majcintro.html):
- Software Portability
The MAJC architecture was designed to efficiently execute code generated by installation-time or just-in-time (JIT) compilation techniques. It may be the first commercial architecture designed without a requirement for binary compatibility between generations. This allows MAJC implementations to evolve over time without accumulating the baggage required to support old binaries, as traditional architectures have always done. Instead, software portability across MAJC implementations is obtained through use of architecture-neutral means of software distribution.
That would make Crusoe the *second* commercial architecture with that feature. But I don't think that MAJC has as much support for hiding the translation process from system-level software as Crusoe does.
The Transmeta chip has some extra support for the X86 emulation (same MMU table format, same flags, etc.) and MAJC has some support for Java, but either one would probably do a good job with other instruction formats (like Self bytecodes, for example.
-- Jecel
self-interest@lists.selflanguage.org