On 05/26/2016 12:27 PM, Jay West wrote: > Chuck wrote... (regarding assembly, not machine language): ------- > "typically tied to hardware"? Can anyone cite a case where it was > not? ------- Absolutely. The Pick Operating System assembly language. > They could not afford a machine when they began development of the > OS. So they wrote the entire OS in a "made up" assembly language that > didn't really exist on any real machine. This got them two benefits - > one, didn't have to buy hardware up front, and two, porting the > entire OS to a completely different platform/architecture was a task > typically measured in weeks, not months or years. In addition, > because it was a "mythical" assembly language, it allowed them to > pretend they had hardware instructions that were unusually well > suited to manipulating data structures that were unique to the > database architecture.
Meh, I'll not too willingly concede that one. P-code is also a made-up machine language. Heck, I've been guilty of doing the same--I don't know if I ever commented on it, but I learned this one from a guy who worked on IBM COMTRAN. The task at hand was to quickly write a translator for COBOL that could take non-standard COBOL constructs and extensions and turn them into either subroutine calls or standard COBOL. To do this, you had to pretty much compile the whole program, then spit out the translation for compilation by a regular compiler. A bit complicated in details, but it was for a multi-mainframe shared-memory realtime transaction-oriented setup. At any rate, the idea was that you devised a fictional machine whose inputs were "tokens" and whose output was "code". So you developed instructions that operated on these things, masking the details like token formation, symbol table management, etc. You encoded these into a fixed instruction format and wrote an interpreter to handle the operations themselves. A very quick way to get things going. When you were satisfied, the "instructions" could be expanded with the macro assembler into real machine language for the platform. While not unique today, this was more than 45 years ago. I later did a compiled multi-user BASIC for the 8085 using the same technique. It took two of us 4 months to do, using nothing more than a floppy-based MDS-800 running ISIS-II. I still have my original design document. The BASIC was later ported to Unix and, as of last year, I was aware of at least one installation still using it. One wonders were Java will be in 45 years... --Chuck