3 ms·
I've written assemblers for about 30 different ISAs (ISAE?)---most of them custom. An ISA (almost always) forms a DAG, where a node is a legal string of {01X} t
by thechao 10y ago
I've written assemblers for about 30 different ISAs (ISAE?)---most of them custom. An ISA (almost always) forms a DAG, where a node is a legal string of {01X} that is producible from the ISA; the 'X' meaning "0 or 1". An encoding is a daughter of another encoding if it has a 0 or 1 whenever the parent has a 0 or 1.
A "projection" is the imposition of a tree-like structure on the DAG, followed by a cut of the tree to make it practicalable in size. Aliasing mnemonics in the tree can cause confusion for the user---or aid in understanding.
These articles are noting that there are many ways to project the x86 ISA.
- nibnib 10y agodo you mind going into why you have written so many assemblers?
- thechao 10y agoMy grad work was in system programming language design; I used to toy around with VM design, so that meant I was (poorly) designing a lot of ISAs and then writing a lot of assemblers for them. My professional work is unrelated to my grad work, but has still let me expand on that interest. Sorry I'm so vague. Think more along the lines of "python byte code assembler", or somesuch thing.
- csl 10y agoDo you happen to blog? Would absolutely love to read about best practices, curious situations and so on.