我已经多次阅读过编译器将高级代码翻译成机器语言以及每当我使用google"机器语言"它告诉我这是汇编语言。另一方面,当我用记事本打开用c ++编写的hello world应用程序时,它向我展示了除了汇编之外的任何东西。实际上这个东西背后的秘密是什么,以及二进制和位进入的位置是什么?请解决我的困惑。
答案 0 :(得分:5)
在最低级别,机器语言没有人类可读的语法。程序是一系列数字,以这样的方式排列,当由CPU解释时,调用程序算法所请求的一系列指令。
汇编语言是机器语言的人类可读表示。 CPU无法直接解释汇编语言,因此需要在两个表示之间进行转换步骤。您可以在可执行文件上运行反汇编程序,以查看其指令表示为汇编语言助记符。
这有点类似于字符串,字符串是人类的字符串,但对于计算机而言,它们只是数字序列。例如,当您编写"ABC"
时,计算机会看到一系列数字65,66,67。编辑程序需要在数字表示(数字)和人类可读表示(字母)之间进行。
同样,一系列指令
AND #0F
OR #30
在simple 8-bit CPU的机器码中看起来像41,15,09,48。汇编语言的翻译将上面的文本变成四个数字;反汇编程序会将四个数字转回人类可读的文本中。
答案 1 :(得分:1)
机器语言是构成可执行代码的原始十六进制或二进制字节流。
汇编语言是一种面向助记符的机器语言中间表示,是人类可读的。从机器语言开始,它是对机器语言所说内容的解释。
答案 2 :(得分:1)
你写C ++;编译器前端生成IR(中间表示)代码(例如,在LLVM / Clang的情况下,这是一种SSA语言形式),优化器调整IR,编译器后端将优化的IR转换为符号汇编(对于目标CPU,汇编程序将asm转换为机器代码(CPU可以执行的指令和数据的实际数值)。
答案 3 :(得分:1)
机器语言是最低级别的编程语言(使用可编程微码的计算机除外)。 机器语言是计算机可以理解的唯一语言。
计算机不理解我们用c ++编写的普通代码。它只能以二进制形式理解代码,即目标代码形式。