首页 置换 选车 估价 问答 生活 经销商 车管所 汽车资讯 汽车销量 车牌查询 今日油价 天气预报
您的位置: 首页 > 生活 > 生活 > 汇编语言与c语言对应语句(高级语言中的语句在汇编中是如何实现的)
汇编语言与c语言对应语句(高级语言中的语句在汇编中是如何实现的)
更新时间:2024-07-04 18:55:36

我们都知道对于c语言来说,它是需要先转换成汇编语言,然后再生成机器语言的。那么在c语言中,各种条件语句,各种表达式的计算,在汇编中是何如实现的呢?今天我们就来讲解一下。

汇编语言

汇编语言是由包含用助记符如 ADD、MOV、SUB 和 CALL 书写的语句。汇编语言与机器语言是一对一(one-to-one)的关系:每一条汇编语言指令对应一条机器语言指令。

因为汇编语言和机器语言是绑定的,而不同机器语言是不同的,因此,汇编语言是不可移植的,而高级语言是可移植的,这也是为什么人们更多地用高级语言来开发应用的一个原因。

跳转指令

跳转指令可以说是实现高级语言条件的核心,因为一切条件判断或者循环语句,底层都是通过跳转指令来实现的。

在汇编语言中,我们可以通过设置标号来实现语句的跳转,例如高级语言的if判断,在汇编语言中,就可以这样实现。

汇编语言与c语言对应语句(高级语言中的语句在汇编中是如何实现的)1

汇编语言与c语言对应语句(高级语言中的语句在汇编中是如何实现的)2

对于循环语句,其实也是一样的,也是通过跳转指令来实现。

汇编语言与c语言对应语句(高级语言中的语句在汇编中是如何实现的)3

汇编语言与c语言对应语句(高级语言中的语句在汇编中是如何实现的)4

在循环内部,EAX 是 val1 的代理(替代品),对 val1 的引用必须要通过 EAX。JNL 的使用意味着 val1 和 val2 是有符号整数。

逻辑判断的实现也是通过跳转指令来实现的,具体如下。

汇编语言与c语言对应语句(高级语言中的语句在汇编中是如何实现的)5

汇编语言与c语言对应语句(高级语言中的语句在汇编中是如何实现的)6

通过上面的例子我们可以看出,无论是怎样复杂的逻辑,无论是循环还是条件判断,在底层汇编层,其实都是通过跳转指令来实现的。

寄存器

我们都知道cpu本身只是用来计算的,它本身不保存数据,但是因为cpu运算速度过快,高于内存读取速度,因此cpu设计了寄存器用来保存临时数据,而读取它们的速度非常高效,大大提高了cpu的处理速度。

汇编语言与c语言对应语句(高级语言中的语句在汇编中是如何实现的)7

我们的高级语言转换成汇编语言的时候,可能一条语句就会变成多条语句,因此我们经常说c语言的语句不是原子的,因为它在汇编层可能会对应多条语句,而多条语句并行的时候就会产生执行顺序的问题,这也是并发产生的原因。

总结

无论是指令还是数据,都是通过寄存器来存储和读取的,正是有了寄存器,我们才可以非常方便地进行数据的累加,进行地址的变换,进行数据的查找。

我们经常说计算机只能识别01二进制数,是说cpu将二进制编码进行了存储和转换,当遇到特定的二进制,它就对应特定的操作。

,