In my Assembly Language book, the Virtual Machine Levels are listed as follows:
- Level 4: High-Level Language
- Level 3: Assembly Language
- Level 2: Instruction Set Architecture (ISA)
- Level 1: Digital Logic
According to the book, Level 2 (ISA) are instructions for the processor; the ISA is also referred to as machine language. Each instruction in this level gets executed either directly by the computer's hardware or by a program embedded in the microprocessor chip called a microprogram.
Above Level 2, is the Assembly Language level 3, programming languages that provide translation layers to make large-scale software development practical. This level uses short mnemonics like ADD, SUB, and MOV that can be easily translated to the ISA on level 2. These type of programs must be translated, or assembled, entirely into machine language at the ISA level before they can be executed.
Top tier is Level 4, high-level programming languages such as C, C++, and Java. These are stated as languages containing powerful statements that translate into multiple assembly language instructions.
That being said, I'm not quite following what the relationship is between a high-level language, say Java in this case, and Assembly Language. In my view high-level languages are simplified to where a single programmed statement may inherently perform many code lines worth of functionality, unlike assembly which needs an explicit statement for each action.
Can anyone provide some input to clear it up for me? This is my first time looking into Assembly, and it thus far is a very different world than my experience in C#.