|
|
|
|
|
by kjs3
814 days ago
|
|
Wasn't VAX assembly very orthogonal and nice? This is the stuff of religious wars; and the VAX is the patron saint of the CISC school of ISA design. Large parts of the VAX ISA are very nice, and it's a lot of fun to program in assembler. There's (relatively for the time) lots of registers, and tons of addressing modes. But some of it is plain bonkers. How many variations of ADDL3 are there across all addressing modes? Dunno...thank gawd the doco is excellent. Then you get to things like INDEX and the numerous character string instructions and suddenly you got a migrane. You want BCD? Well of course you do. A CRC instruction? The customer is always right. Bit fields? Why wouldn't we? Didn't find something you like? We have the writable control store option so you can microcode your own instructions. |
|
I don't disagree in general. Writing a disassembler must have been a real challenge.
It's a waste of gates in the CPU. You put a lot of unnecessary combinatorical logic on the critical path, which limits the clock speed.
RISC chips remove everything that is not needed for the output of a C compiler, making the chip smaller and faster.
But from the perspective of Stallman writing a C compiler and having to generate and read lots of assembly code, I can see how the VAX assembly was easy to deal with. He could skip past a lot of stuff like BCD/CRC.
I'm not intimately familiar with 386 assembly, but my impression is that you have a lot of interdependencies and special cases? That can't be fun when writing a compiler. But at least it's not an accumulator-based CPU architecture like the 6502 or the PIC16, where everything has to be done through a single register.