【问题标题】:Does this coding answer look good?这个编码答案看起来不错吗?
【发布时间】:2020-12-17 03:39:10
【问题描述】:

在学校里,我被告知要描述机器语言、汇编语言和高级计算机语言之间的区别。

举一个机器语言代码和汇编语言代码的例子,然后说出两种高级语言

这是我的回答:

“机器和汇编由计算机直接执行的指令组成。高级编程语言比机器语言更接近英语。对于机器代码,我的例子是二进制,如 1101 或 1001。C 是汇编语言代码。Java 和 python 是高级语言。"

【问题讨论】:

  • C 是一种高级语言。在汇编语言中,源代码直接对应机器指令。
  • C 通常编译为指令集的机器码。 java 和 python 通常编译为虚拟机的字节码,而不是目标处理器的字节码……但毫无疑问,这三种语言绝对是高级语言。
  • 使用objdump -d /bin/ls(例如在 GNU/Linux 上)反汇编程序并查看机器代码(或它的 hexdump)和相同指令的相应汇编源代码表示。 1101 什么都不是,尽管可能一些具有 4 位指令的玩具机器可以想象甚至存在于纸上。

标签: assembly machine-code high-level


【解决方案1】:

机器代码可以说是不可读的;其中指令被编码为数字:作为数字字段;偏移量的数字,常量的数字,操作码的数字,寄存器的数字。没有代码标签,没有数据标签——只有数字。

汇编语言引入了助记符、寄存器名称和(耶!)标签——而且这个源代码可以作为文本阅读。尽管更易读,更重要的是更容易编辑,但汇编行大多直接对应于机器代码指令。

“高级”计算机语言也是人类可读的文本,但至少有两个不同于汇编语言的特性。首先,结构化陈述的概念。其次,类型和声明的变化。

结构化语句(if-then、if-then-else、while、for、do-while、函数)允许在不使用标签的情况下对控制结构进行逻辑嵌套——这是对汇编语言的巨大改进。

类型有助于防止非法程序状态,通常是在编译时 - 尝试将字符串相乘的程序会出现编译时错误 - 根本不允许运行。

在高级语言程序中,我们可以声明一个具有类型的变量,并且该变量的类型在程序运行期间得到尊重。机器代码(或汇编)程序也知道类型,但更少通过声明,而是通过指令流中的重复——每次访问变量时,都应该使用与类型相适应的指令变体(符号、数据大小等) ..)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-28
    • 1970-01-01
    • 2016-12-12
    相关资源
    最近更新 更多