第一句子大全,网罗天下好句子,好文章尽在本站!

高级语言中的语句在汇编中是如何实现的

时间:2012-04-18

那么在c语言中,各种条件语句,各种表达式的计算,在汇编中是何如实现的呢?今天我们就来讲解一下

友情提示:本文共有 880 个字,阅读大概需要 2 分钟。

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

汇编语言

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

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

跳转指令

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

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

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

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

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

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

寄存器

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

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

总结

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

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

本文如果对你有帮助,请点赞收藏《高级语言中的语句在汇编中是如何实现的》,同时在此感谢原作者。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
相关阅读
goto语句对程序的“可读性与可维护性”会引起了很大破坏作用

goto语句对程序的“可读性与可维护性”会引起了很大破坏作用

goto语句的本质就是机器语言的地址跳转指令,也就是汇编语言中的jump 指令,它的作用是命令cpu直接去内存中读取指定地址的指令去执行,从而实现程序逻辑的控制。可以说,我们后来用的高级语言中的分支、循环啊,最终都是...

2022-11-24 #经典句子

C语言的简单了解及学习

C语言的简单了解及学习

...一种通用的高级语言,当然这个高级是相对于机器语言,汇编语言来说的。现在它并不那么高级,但我们为什么还要学他呢?因为你现在看到的大多数的经典都是用C语言完成的。C原因最初是由丹尼斯·里奇在贝尔实验室为开发 U...

2010-04-07 #经典句子

教孩子写游戏:快速入门C++语言 理解这12个概念 1天时间够了

教孩子写游戏:快速入门C++语言 理解这12个概念 1天时间够了

...和数字代替二进制的编程语言,这个语言就是大名鼎鼎的汇编语言。汇编语言只不过是简单翻译了一下二进制中的内容。比方说,10101010这个二进制代表的是一个控制命令,它能把CPU中某个地方的某个数据转移到另一个地方;而...

2023-02-01 #经典句子

「GCTT 出品」关于结构化并发的笔记——Go 语言中有害的声明语句

「GCTT 出品」关于结构化并发的笔记——Go 语言中有害的声明语句

...注goto 到底是什么让我们回顾历史:早期的计算机是使用汇编语言编程的,或者其他更原始的机器机制。有些简陋。因此,在20世纪50年代,IBM 的 John Backus 和 Remington Rand 的 Grace Hopper 等人开始开发 FORTRAN 和 FLOW-MATIC 等语言(以其...

2023-09-18 #经典句子

@程序员 快来速取硬核的汇编语言知识大全!

@程序员 快来速取硬核的汇编语言知识大全!

作者 | cxuan 责编 | maozz汇编语言作为第二代计算机语言,会用一些容易理解和记忆的字母,单词来代替一个特定的指令,作为高级编程语言的基础,有必要系统的了解一下汇编语言,那么本篇文章希望大家跟我一起来了解一下汇...

2023-01-23 #经典句子

C 语言发展史的点点滴滴

C 语言发展史的点点滴滴

...需要一种可靠的高级语言的出现(当时的低级语言指的是汇编,因为之前的操作系统是用汇编写的)。这个时候的丹尼斯.里奇也没闲着,在对B语言改良之后,就诞生了带有类型的C语言(据里奇自己说,有一段时间称这种改良的语言...

2023-01-31 #经典句子

每一种编程语言都是胶水语言

每一种编程语言都是胶水语言

...。不同编程语言的本质区别,在于各自积木的粒度不同。汇编的粒度是CPU的单条指令,所以它可以精确地控制内存的堆栈,和程序的执行流程。C的粒度就要粗一些,没法像汇编一样控制的那么精细,在shellcode这种需要耍花样的...

2023-12-26 #经典句子

最理想的语言之一:GO为何如此与众不同?

最理想的语言之一:GO为何如此与众不同?

... Go Modules 所取代),这是一个强大的依赖管理系统,它的汇编器非常接近二进制代码,可实现快速构建,然后实现非常轻量级和二进制文件的大小效率。这使得它能与微服务架构模式以及一般的云原生开发完美匹配。· 没有 try-cat...

2023-11-20 #经典句子