Blogger

Delete comment from: Ken Shirriff's blog

Anonymous said...

Packed BCD, VAXen had massive support for it. Add, sub, mil and div along with conversion instructions and few more like compares. MicoVAX and most later machines dropped these as native instructions and they became emulated. The processor hitting one of these packed opcodes along with a bunch of other complex instructions, (like CRC) caused a trap to a set of code loaded into the kernel to emulate them. In some cases even having the emulated instructions was slower than the compiler generating very specific code, rather than the emulation code that could handle everything. Thus, later compilers had some switches to vary the degree that packed opcodes were used. In this way binary code from the earliest machines still ran on the very newest machines. It divided up the instruction set into those opcodes that were not allowed in kernel/driver code as you may not be able to take the emulation fault if already in the middle of some other fault or interrupt.

Jan 31, 2023, 12:11:56 PM


Posted to Understanding the x86's Decimal Adjust after Addition (DAA) instruction

Google apps
Main menu