C compiler compiles into binary machine code. I think pascal too, but not java, dotnet, python.
Assembly-language-source-code vs machine-code — 1-1 mapping. Two representations of the exact same program.
Assembly-language-source-code is by definition platform-specific, not portable.
A simple addition in C compiles to about 3 “Instructions” in machine code, but since machine code consists of hex numbers and unreadable, people represent those instructions by readable assembly source code.
Compared to a non-virtual, a virtual function call translates to x additional instructions. X is probably below 10.
There are many “languages” out there.
* C/c++ remain the most essential language. Each line of source code converts to a few machine instructions. Source code is portable without modification whereas the compiled machine code isn’t.
* Assembly is often called a “language” because the source code is human readable. However a unique feature is, each line of Assembly-language-source-code maps to exactly one line of machine code.
* newer languages (c# java etc) produce bytecode, not machine code.