Levels of Abstraction (Machine to High-Level)

Context: FIT2102_MOC · why high-level languages exist at all — the ladder Programming Paradigms climbs away from · hardware detail in Von Neumann Architecture and Programs, executed by Fetch-Decode-Execute and RTL (Control), hand-traced in FIT1047 as MARIE Assembly (Instruction Set and Patterns) Course notes: Chapter 1.

Quick Revision

  • 🎯 Objective: machine → assembly → high-level âž” each rung buys human meaning by adding a translation step, and each rung departs further from the von Neumann machine.
  • ⚡ Key Constraint: assembly is a rename, not an abstraction — its operations map one-to-one onto machine operations, so it inherits the machine’s execution model wholesale.

📝 Core

  • Machine language âž” operations and their arguments (operands) represented as binary numbers, executed either directly in hardware or by a microprogram embedded in the microprocessor.
  • Assembly language âž” still needs a translator, but operations correspond one-to-one with machine operations. What it actually buys: naming operations and memory locations symbolically; defining procedures (a later addition); conveniences for arrays and macros.
  • High-level language âž” a compiler or interpreter transforms human-readable instructions into machine operations — the first rung where one line of source need not be one machine operation.
  • C sits between âž” more understandable syntax than assembly, but still close to the machine execution model.
  • This was once the working level âž” Margaret Hamilton’s team built the Apollo flight software at the machine level; complexity at that rung is possible, merely brutal.
  • Where the unit goes âž” each language studied later departs further from von Neumann architecture, ending at a genuinely different model of computation (the lambda calculus) rather than a friendlier notation for the same one.

🗺️ Layer & Dataflow

RungUnit of expressionTranslated byRelation to machine opsPortable?
high-levelstatement / expressioncompiler or interpretermany-to-manyyes
assembly[label:] mnemonic [operands]assemblerone-to-oneno (per-ISA)
machinebinary opcode + operands— (hardware / microprogram)is the machine opno (per-ISA)
  • The von Neumann model âž” a model of computation closely matching real hardware (control unit · ALU · memory · input · output). It shares with the Turing Machine an imperative, “instruction-following” paradigm — exactly the assumption the lambda calculus drops.
  • Hardware context âž” CPU = ALU (arithmetic/logic) · CU (control) · registers · clock (synchronises the CPU with the rest of the system); wired by the data bus (moves instructions and operands), address bus (names the location to read/write), and control bus.

đźš« Not Examinable (per the slide markers)

The W1 deck explicitly stamps “Not Examinable” on: the instruction execution cycle; x86 data registers (RAX/EAX/AX/AH/AL and friends); the MASM .386 / main PROC skeleton; and the arithmetic (mov, add, sub, mul, div, xor), jump (jmp, loop, cmp, je), stack (push, pop) and procedure (call, ret) tables. Read once for the feel of the rung; spend no revision time here. The assessable claim is the ladder and its consequences, above.

⚠️ Common Mistakes

  • đź’ˇ Treating “needs a compiler” as the dividing line âž” assembly needs a translator too. The line is one-to-one vs not: an assembler renames, a compiler genuinely translates.
  • đź’ˇ Reading “abstraction” as “convenience” âž” the payoff is distance from the execution model. C has friendlier syntax than assembly but has barely moved from the machine’s model — which is why it is not a paradigm shift.

đź§  Active Recall