Hacker News new | ask | show | jobs
by pjmlp 3387 days ago
Just as additional information, this is just the future catching up with the past.

Most mainframe architectures since the early 60's, didn't really used pure Assembly, rather bytecodes that were processed by microcode on the CPUs.

Hence why many old papers tend to mix both terms, bytecodes vs assembly.

This tradition carried on to mainframe architectures like the AS/400, nowadays IBM i, where the user space is pure bytecode (even C), called TIMI, and a kernel level JIT is used at installation time to convert the application into the actual machine code.

IBM i Java takes advantage of this, where the JVM bytecodes are converted into TIMI bytecodes.

It also provides some kind of common language runtime called ILE (Integrated Language Environment).

So the trend of using LLVM bitcode on iDevices, Dalvik on Android or MSIL on .NET, JavaScript/WebAssembly on browsers, is similarly with containers, modern computing catching up with mainframe ideas.

2 comments

IBM i Java used to run on top of TIMI. But the runtime overhead and IBM developer overhead were too high, and now it runs on top of PASE, which implements the AIX runtime without involving TIMI.
I wasn't aware of the change, thanks for the correction.
The change is a bit disappointing, in a way. Though I'm not sad to see the last of CRTJVAPGM.
> Just as additional information, this is just the future catching up with the past.

> Most mainframe architectures since the early 60's, didn't really used pure Assembly, rather bytecodes that were processed by microcode on the CPUs.

And was that microcode typed SSA-based IR with alias metadata and so forth?

You can't just lump all "bytecodes" together. x86 machine code is a bytecode that is processed by the microcode on the CPUs too.

I bet if anyone goes dig into SIGPLAN pappers there might be one or two examples there.

Even if not, I see it as a very interesting Msc or PhD to implement a FPGA to execute LLVM bitcode.

I am not the one lumping all bytecodes together CS papers since the dawn of our industry are. Just go dig a random paper about computer architectures in the 50 and 60's, for example.

Some of them even use bytecode and assembly interchangeably on the same document.

I guess we could eventually consider it a form of bytecode, given its CISC nature.

And when bytecode gets a pure hardware implementation, without any form of microcode support, is it still bytecode or has it become assembly?