机器语言到底是什么?
What actually is the machine language?
我已经读过很多次编译器将高级代码翻译成机器语言,每当我谷歌"机器语言"时,它都会告诉我它是汇编语言。另一方面,当我打开一个用记事本用 c++ 编写的 hello world 应用程序时,它向我展示了一些除了汇编之外的东西。这些东西背后的秘密到底是什么,二进制和位是从哪里来的?请解决我的困惑。
在最低级别,机器语言没有人类可读的语法。程序是以这样一种方式排列的数字序列,当由 CPU 解释时,调用程序算法请求的指令序列。
汇编语言是机器语言的人类可读表示。CPU 无法直接解释汇编语言,因此需要在两个表示之间执行转换步骤。您可以在可执行文件上运行反汇编程序,以查看其表示为汇编语言助记符的指令。
这有点类似于字符串,字符串对人类来说是字符串,但对计算机来说,它们只是数字序列。例如,当你写"ABC"
时,计算机会看到一个数字 65、66、67 的序列。它需要一个编辑器程序在数字表示(数字)和人类可读表示(字母)之间切换。
同样,一系列指令
AND #0F
OR #30
在简单的 41 位 CPU 的机器代码中看起来像 41、15、09、48。汇编语言的翻译器会将上面的文本变成四个数字;拆装器会将四个数字变回人类可读的文本。
机器语言是构成可执行代码的原始十六进制或二进制字节流。
汇编语言是人类可读的机器语言的面向助记符的中间表示。 从机器语言开始,它是对机器语言所说的解释。
你写C++;编译器前端生成IR(中间表示)代码(例如,在LLVM/Clang的情况下,这是一种SSA语言形式),优化器调整IR,编译器后端将优化的IR转换为符号汇编(对于目标CPU),汇编器将asm转换为机器代码(CPU可以执行的指令和数据的实际数值)。
机器语言是最底层的编程语言(使用可编程微码的计算机除外)。 机器语言是唯一被计算机理解的语言。
计算机不理解我们用 c++ 编写的普通代码。它只能理解二进制形式的代码,即目标代码形式。
您可以在此处了解更多信息 http://www.brighthubengineering.com/consumer-appliances-electronics/115635-machine-language-vs-high-level-languages/
- 在两台机器之间进行时间戳的最佳c++chrono函数是什么
- C++ 将字符串数据包转换为 iphdr语言 - 字符串数据包的格式应该是什么?
- 机器语言到底是什么?
- 语言环境"en_US"中 std::time_get::get_time() 的正确时间格式是什么?
- 是什么使C++程序仅是 64 位或受机器限制
- 这在 C 语言中是什么意思
- 这是什么C++语言结构:#(即哈希)整数"path_to_header_or_cpp_file"<integer>?
- constchar***是什么意思?它是如何从C语言转换为Java语言的
- 是什么使语言不愿意/无法纳入RAII
- c语言中的远函数指针是什么,它的语法是什么
- 在一台有n个内核的机器中,确定要启动的线程数的最佳方法是什么?(C++)
- 如果机器每字节> 8 位,int8_t是什么?
- 将脚本语言嵌入游戏引擎中的编程语言的目的是什么?
- (ptr语言 - A[0]) / (sizeof(A[0]) / sizeof(A[0][0]))的类型是什么?< /
- 在Eclipse中使用不同编程语言的方法是什么?
- 在 C 语言中 &(AND) 运算符的用法是什么?
- 在c++中为当前机器生成GUID的简单方法是什么?
- 使用多种编程语言:重点是什么?
- 语言律师 - 空C++文件的效用是什么?
- 在同一台机器上运行的Java和C++应用程序之间,IPC的最佳方法是什么