amen zwa, esq. on Nostr: #EE undergrads interested in #CPU and #compiler designs may wish to explore the ...
#EE undergrads interested in #CPU and #compiler designs may wish to explore the following:
• Pick a classic 8-bit CPU architecture, 8008, 8080, Z80, 6800, or 6502, and learn the instruction set architecture and the assembly language for that CPU
• Implement, exclusively in C, a minimally-functional assembler for that instruction set
• Adapt the assembler to use Lex and Yacc, in order to gain familiarity with these language tools
• Implement a compiler frontend for a barely-Turing-complete high-level language, maybe supporting only if, goto, and call/return, and implement the backend that targets the chosen instruction set
• Add a strong, static type checker, along the lines of Pascal
• Expand the language by switching to language workbenches, like Spoofax, Xtext, or MPS
• Implement a simplified version of the chosen CPU architecture in Verilog or VHDL, perhaps even digging down to a cycle-accurate version
An average student can get through the first two steps in the first two years of college, perhaps even in the first two semesters.
Published at
2026-01-02 19:37:23 UTCEvent JSON
{
"id": "6c81a5c0ba20e4052c382b6c198d3bbdedc5e8898e03eea03f3d5c2bf113a7ba",
"pubkey": "0c8639166f56b924135dc83a8239d85f9101ae8ee195b9199ff563a966411df1",
"created_at": 1767382643,
"kind": 1,
"tags": [
[
"t",
"compiler"
],
[
"t",
"cpu"
],
[
"t",
"ee"
],
[
"proxy",
"https://mathstodon.xyz/users/AmenZwa/statuses/115827188949456094",
"activitypub"
],
[
"client",
"Mostr",
"31990:6be38f8c63df7dbf84db7ec4a6e6fbbd8d19dca3b980efad18585c46f04b26f9:mostr",
"wss://relay.ditto.pub"
]
],
"content": "#EE undergrads interested in #CPU and #compiler designs may wish to explore the following:\n\n• Pick a classic 8-bit CPU architecture, 8008, 8080, Z80, 6800, or 6502, and learn the instruction set architecture and the assembly language for that CPU\n• Implement, exclusively in C, a minimally-functional assembler for that instruction set\n• Adapt the assembler to use Lex and Yacc, in order to gain familiarity with these language tools\n• Implement a compiler frontend for a barely-Turing-complete high-level language, maybe supporting only if, goto, and call/return, and implement the backend that targets the chosen instruction set\n• Add a strong, static type checker, along the lines of Pascal\n• Expand the language by switching to language workbenches, like Spoofax, Xtext, or MPS\n• Implement a simplified version of the chosen CPU architecture in Verilog or VHDL, perhaps even digging down to a cycle-accurate version\n\nAn average student can get through the first two steps in the first two years of college, perhaps even in the first two semesters.",
"sig": "eaee8f258a64030b084260a7ddf3677225ec3269c1558d36d611eb61bfd1748687e8856f2412b623c6a26429a625505026d2d162d6900d8f18fa0111e80d018b"
}