Hình như bạn có nhầm lẫn gì đó nhỉ.
Nếu bạn dùng c/c++ thì sau khi biên dịch sẽ thành Mã máy (biên dịch ở đâu thì ra Mã máy tương đương ở đó, nên khi code nền tảng nào thì theo nền tảng đó, muốn đa nền thì phải code riêng cho mỗi nền tảng).
Java, C# sau khi biên dịch sẽ thành bytecode, khi chạy thì Java/.Net Framework sẽ thông dịch đống bytecode đó (đúng ra thì bytecode sẽ được JIT compile sang Mã máy; làm thế để có thể lập trình đa nền tảng một cách dễ dàng). https://en.wikipedia.org/wiki/Just-in-time_compilation
ASM là một ngôn ngữ lập trình thể hiện Mã máy một cách ngắn gọn hơn Mã máy bình thuờng (thật ra đối với mình thì ASM chính là mã máy, chỉ là viết gọn lại thôi, biên dịch thì ra Mã máy; mỗi nền tảng thì có ASM riêng biệt, như ASM của Intel, ASM của MIPS, v.v.)
Tấm hình mà bạn đăng thì đâu có nói gì về biên dịch đâu nhỉ?