2 jx4bwx jx4bwx 于 2016.03.06 20:19 提问

汇编语言与c语言之间有哪些关系

关于汇编需要那也基础,不知道具体汇编语言的用途,汇编语言和c语言之间有哪些关联了

6个回答

caozhy
caozhy   Ds   Rxr 2016.03.06 20:24

汇编语言在PC上的编程很少用了,甚至在嵌入式系统上也很少用了,学习汇编有如下几个用途:
(1)在没有源代码的情况下反向分析和调试程序,比如软件破解,编写游戏外挂
(2)深度代码优化,提高程序的性能
(3)为51等低级的单片机和简易计算机编写程序
(4)理解80x86计算机体系结构
(5)理解C语言编译原理,代码生成和优化

WinsenJiansbomber
WinsenJiansbomber 理解80x86计算机体系结构这点好像说得片面了,汇编对所有平台来讲都适用,不管是x86/51/ARM/ALPHA...只是不同平台指令集有变化
2 年多之前 回复
kanongke
kanongke   2016.03.06 22:09

以前上本科时先学习的C,后来学的汇编,现在还在继续学C.

lx624909677
lx624909677   Ds   Rxr 2016.03.07 16:22

汇编是比C更接近硬件的语言,汇编具体用处挺多的,一般和硬件打交道的都要用到汇编,比如驱动开发,还有再只做一些游戏WG的时候,尤其是网游,很多时候是汇编功底的PK

ouchao0727
ouchao0727   2016.03.06 20:24

汇编语言是比c更低级的一种语言,能直接操作硬件,c代码在编译的时候先编译成汇编代码

xswd169
xswd169 回复caozhy: 还是这样的啦,我一直以为C会变成汇编的
2 年多之前 回复
caozhy
caozhy 早期的C编译器会编译为汇编,现代的C编译器则直接可以生成机器代码
2 年多之前 回复
wangyaninglm
wangyaninglm   Ds   Rxr 2016.03.06 20:23

我觉的可以引用赵老师的话回答一下你,哈

 VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
想要从本质上理解C指针,必须学习汇编以及C和汇编的对应关系。
从汇编的角度理解和学习C语言的指针,原本看似复杂的东西就会变得非常简单!
指针即地址。“地址又是啥?”“只能从汇编语言和计算机组成原理的角度去解释了。”

提醒:
“学习用汇编语言写程序”
和
“VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
想要从本质上理解C指针,必须学习C和汇编的对应关系。”
不是一回事!

不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。


WinsenJiansbomber
WinsenJiansbomber   2016.03.06 21:47

- 它们都是让人与机器交流的语言
- C语言更接近自然语言,代码比较容易阅读
- 汇编更接近机器,掌握它可以从更深层次去理解机器
- 它们经过编译程序处理后得到的都是二进制指令数据,对机器来说无区别。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C语言和汇编语言的关系
在写驱动程序或者优化程序的时候,我门可能会使用到汇编语言,为了理解汇编语言,我们先看看下面这个简单的例子: #this is in a file first.s .global main main: movl $20, %eax movl $10, $ebx ret
C学习笔记(一) C语言和汇编语言的区别
C学习笔记(一) C语言和汇编语言的区别   C语言和汇编语言的区别: 汇编:效率高,对硬件的可操控性更强,体积小,不易维护,可移植性很差  C:效率比较低,硬件可操控性比较差,目标代码体积大,容易维护,可移植性很好     汇编语言运行效率高的原因:(转载) 1.  汇编语言实质上是机器语言的助记符。 CPU只能运行它所支持的指令集,而这些指令集当中的每条指令都是一些二进制
c语言和汇编语言的区别
什么是c语言:     C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言;尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
C语言与汇编语言混合编程应遵守的规则
ARM编程中使用的C语言是标准C语言,ARM的开发环境实际上就是嵌入了一个C语言的集成开发环境,只不过这个开发环境与ARM的硬件紧密相关。 在使用C语言时,要用到和汇编语言的混合编程。若汇编代码较为简洁,则可使用直接内嵌汇编的方法;否则要将汇编程序以文件的形式加入到项目中,按照ATPCS(ARM/Thumb过程调用标准,ARM/Thumb Procedure Call Standard)的规定与C
深入理解汇编语言和c++语言(1)---从a+b说起
最近突然对c语言,以及c语言如何转换到汇编语言特别的感兴趣,于是写了这个系列,首先让我们看一个小程序: #include using namespace std; int main(){ int s; int a=3; int b=4; s=a+b; return 0; } 这是个很简单c++程序,仅仅把两个局部变量相加而已,我们汇编这段代码: g++  -S add.cc
C语言与汇编语言的相互调用
C语言是目前非常流行的一种编程语言,除具有高级语言使用方便灵活、数据处理能力强、 编程简单等优点外,还可实现汇编语言的大部分功能,如可直接对硬件进行操作、生成的 目标代码质量较高且执行的速度较快等。所以在工程上对硬件处理速度要求不很高的情况下, 基本可以用C代替汇编语言,编写接口电路的控制软件。但C也不能完全取代汇编语言,如在一些对速度要求很高的实时控制系统中,以及对硬件的特殊控制方面,C有时也不
汇编语言和C语言的混合编程
C/C++语言是一个被广泛使用的程序设计语言,它不仅具有良好的高级语言特征,而且还具有一些低级语言的特点,如:寄存器变量、位操作等。所以,C语言的程序与汇编语言程序之间能很平滑地衔接。另外,目前主要的C语言程序开发环境,如:Turbo C/C++、Borland C/C++等,也都提供了很好的混合编程手段。 这里介绍汇编语言和C语言的混合编程和调用方法。虽然其它高级语言,如:Pascal、Ba
C语言与计算机的关系
<br /> 语言是交流的工具。C语言是编程语言,用于同计算机的沟通。C语言是程序员与计算机之间的翻译。<br />现代计算机均为冯·诺依曼计算机,基本原理为:二进制、存储程序和分为五大组成部件。C语言与计算机之间的关系可以用下图表示:<br /><br />总结起来为:<br /> <br />C语言用scanf函数控制计算机中的输入设备接收用户输入的数据,并把数据存储到内存中。C语言用变量标识计算机中的内存。C语言用代数式“命令”计算机中的运算器进行运算。C语言用printf函数控制计算机中的输出设备显
C语言与汇编语言混合编程
C语言与汇编语言混合编程 1、在C / C++程序中使用内嵌的汇编指令 在ARM C语言程序中,使用关键字__asm来标识一段汇编指令程序。 程序格式如下所示: __asm ;注意是两个下划线! { 汇编语言程序 ~~~~~~~~~~ 汇编语言程序 }其中一条指令占据多行的时候,要使用续行符号( \ )。必须小心使用物理寄存器,如R0 ~ R3、SP、LR和CPSR
DSP_c与汇编混合编程的一点总结
在C和汇编混合编程的时候,存在C语言和汇编语言的变量以及函数的接口问题。  在C程序中定义的变量,编译为.asm文件后,都被放进了.bss区,而且变量名的前面都带了一个下划线。在C程序中定义的函数,编译后在函 数名前也带了一个下划线。例如:            extern int num就会变成 .bss _num, 1            extern float nums