CPU就是用来计算的,CPU可以做不同的计算,每种计算是一个命令,你可以用命令通知CPU做这种计算,所有的命令构成了指令集。
你写的代码CPU是不懂的,需要翻译成上面说的命令,这个翻译者就是编译器。
算法跟他们的关系稍远一些。如果把计算比作生产的话,那算法就是配方和工艺,指导着从原材料到产品的生产过程。
希望能帮助到你。
㈡ 编译器为什么会生成汇编语言而不是机器语言
计算机只能识别二进制代码,所以机器指令是由二进制代码组成的,即你所说的机器语言。所谓汇编语言,只是一种符号,用来方便人们使用,否则你看到的都是一串串的01011011之类的信息,一眼就认出它是什么指令非常困难,而用汇编语言这种符号,一看就知道是什么指令了。这种符号语言用助记符来表示操作码,用符号或符号地址来表示操作数或数地址,它与机器指令是一一对应的。(楼上各位表述的所谓“步骤”论是不确切的)
所以,并不是你说的“生成汇编语言而不是机器语言”,生成的是机器语言,你在调试器或反汇编程序中看到的汇编语言代码只是由反汇编程序把机器指令翻译成你看得懂的符号--汇编语言--而已。(比如你在OD或IDA中可以看到每行汇编指令前面都有机器码,如push ebp的机器码是55h,单看55,你不是熟手的话可能还不知道它是什么指令,后面给你显示出符号"push ebp",你一下子就明白了,这就是一一对应的关系,连"55"都是为了让你看的方便,否则应是01010101,即8个电子元件的电源开、关状态)
同样的道理,你在十六进制编辑器(如winhex、HexWorkShop等软件)中看到的是十六进制每行16字节排列的,那也是经过把二进制代码每字节转换成十六进制显示给你看的。
关于平台问题,当然会有影响,不同的CPU有不同的指令系统,就连同一厂家的CPU指令系统都不同,比如Intel公司的CPU,从最早的到现在的,指令不断增多,什么MMX、SSE等等新指令集不断出现,更不要说不同厂家的CPU了。当然它们之间也有很多兼容的指令集。
㈢ 学c语言用电脑编程,或运行相关编译器等软件,所用电脑必须用intel的处理器吗
ss。一般ASP搭配Access,PHP搭配MySql。
PHP是比较古老的语言了,ASP也是五六年前很流行的,这两年比较流行的是Java和Asp.net,不过学Java比较多人要,Asp.net开发起来会相对简单一点,但现在Java也封装得很好,有利于开发。关于学什么,就自己兴趣所在了。
我也是计算机专业的,虽然觉得不怎样,但总算有过这几年经验。关于如何学一门语言,我认为,不要只看书,要看书然后动手,最好自己找个项目来做,做项目需要什么,就看什么,边学边做,这样一来有兴趣,二来可以学到东西。但是若一点都不懂的话项目也是做不下去的,所以呢,最好找两本好一点的书,先浏览性过一遍,然后再相对较详细的看一遍,这样起码对这门知识有点了解,以后做的时候找相应的知识也容易一点。
最后回答你的第一个和第二个问题:1.那些不用记下来,要看懂,要知道结构,比如If...else;for,while之类的,知道那些是表达什么样的结构。这些东西,边用边学慢慢就全知道了,背下来一点用都没有。
2.不一样的概念。这里的函数只是把一些经常用到的语句写在一起,方便调用。这些慢慢体会。
个人经验,回答完毕。
㈣ 关于cpu指令集和编译器的问题
这些软件在编写时也考虑到了这点,所以用兼容的方式是可以运行的,当然,在优化过的程序(与指令集最匹配)中肯定会获得较好的运行效率。
个人观点,不够专业,仅供参考!
㈤ 正常编写的c语言程序编译器会自动进行针对特定指令集用汇编语言优化吗
这个要看你使用什么编译器了。查看编译器的帮助文档,它会告诉你它支持那些指令集,并且做哪些可能的优化。
不同的编译器,是不一样的。
补充:GCC 不太清楚,你连VC++的版本都不说。汗,VC6是不支持SSE的,需要安装VC6SP5。
VS2005 和 VS2008 都支持 SSE。对 SSE/MMX 指令集优化得最好的,还是 Intel 的 c++ 编译器。
对并行和高性能计算,Fortran 的优势比较大。特别是 Fortran2003 的新特征,为并行计算做了很多专门的设定。Intel 也有 Fortran 的编译器。
㈥ 处理器架构,指令集和汇编语言,三者有何关系
指令集架构简称指令集,ISA,CPU的执行单元和解码logic基本上由指令集决定。软件硬件之间的一个接口,程序员根据CPU的指令集能编写各种各样的编译器,用高级语言编写程序。
汇编语言属于指令集,指令集包括机器指令和汇编指令。一条机器指令对应一条汇编指令,如mips中的000000机器码指令对应汇编指令的add假加法指令。汇编语言是便于人去理解的,记着一条add指令总比000000容易吧。
处理器架构就是微架构,学术界称为微结构。主要是CPU的流水线部分的设计。
㈦ 程序是通过编译器编译才能执行的,那么编译器又是怎么
一般来说,程序语言的编译有两个变量,一个是语言本身的语法体系,另外一个是目标机器的指令集体系结构。
对于前者,我们要发明一个新的编程语言的时候,一般是用已有的编程语言写新语言的编译器;
对于后者,要进行交叉编译,即在A指令集的计算机上编译B指令集计算机要用到的二进制程序。
本质上是一个鸡生蛋蛋生鸡的问题。
然而还是会绕到最终的问题:最最开始的第一只鸡(蛋(编译器))哪里来的?
当然是拿汇编语言写的啦~
那第一个汇编语言的汇编器是怎么写的?当然是直接手写二进制代码啊。。。
㈧ c语言的编译与处理器的指令集有关吗一定要CISC吗RISC可不可以
C语言只是用于描述问题和算法的一种语言,而在实际机器上真实运行的却是各处理器自己的机器指令。编译器的工作就是将C语言翻译为机器指令。对你的问题答复如下:1. C语言与指令系统没有关系,但是编译器翻译的指令与指令系统有关系;2.无论CISC还是RISC,编译器都可以将C语言翻译为对应的机器指令。
㈨ 编译器与指令集
1.tc是16位的编译器,它用于64位的程序开发。自然没有对新的64位指令集支持。
2.楼主的理解有一些偏差:如同楼上所说,C语言是本地编译和链接的,此次编译链接成的可执行文件时针对本地机。其跨平台是在可用一个源文件在多平台编译链接,但是其产生的目标文件和本地不同。
TC已经过时N久了,推荐楼主使用微软的VS2008。