cpu指令系统 ( 积分: 70 )

  • 主题发起人 主题发起人 sjjwan
  • 开始时间 开始时间
S

sjjwan

Unregistered / Unconfirmed
GUEST, unregistred user!
不同的CPU有不同的指令系统,而像机器语言是CPU直接能理解的语言。它不任何处理就可以运行。用机器语言写的指令必须与CPU匹配,否则就出错。汇编跟机器语言一样,是写给计算机的语言。不同的CPU有不同的汇编语言。而高级语言,不必熟悉CPU的指令系统,具有可移植性(这移植性指的是源代码具有移植性,对吗?),编译系统会把它编译成本地代码。
我想问的是,同样一个实现功能,用汇编写的代码很少。而用高级语言生成的目标代码会很多呢?cpu指令系统规定这条指令是完成这项功能的。编译器分析我的代码,发现要实现这个功能的。就把它编译成这条指令就行了呀。为何会生成很多目标代码来实现这个功能呢
cpu看的懂吗?cpu指令系统是不是就是cpu支持的指令。(即cpu看的懂的指令)!是不是cpu在设计时事先规定的。什么样的指令实现什么功能?
对我以上的说法到地对不对?请高手指点啊!
 
不同的CPU有不同的指令系统,而像机器语言是CPU直接能理解的语言。它不任何处理就可以运行。用机器语言写的指令必须与CPU匹配,否则就出错。汇编跟机器语言一样,是写给计算机的语言。不同的CPU有不同的汇编语言。而高级语言,不必熟悉CPU的指令系统,具有可移植性(这移植性指的是源代码具有移植性,对吗?),编译系统会把它编译成本地代码。
我想问的是,同样一个实现功能,用汇编写的代码很少。而用高级语言生成的目标代码会很多呢?cpu指令系统规定这条指令是完成这项功能的。编译器分析我的代码,发现要实现这个功能的。就把它编译成这条指令就行了呀。为何会生成很多目标代码来实现这个功能呢
cpu看的懂吗?cpu指令系统是不是就是cpu支持的指令。(即cpu看的懂的指令)!是不是cpu在设计时事先规定的。什么样的指令实现什么功能?
对我以上的说法到地对不对?请高手指点啊!
 
当条的cpu指令肯定是没有什么用处的啦,一般一个程序可以编译成一个指令集的。
 
确实CPU有不同的指令系统,8086和486就有者不同的指令集,但是它是向下兼容的。汇编语言是符号化的机器语言,反这也就是说每一句汇编都可以换算成相应的机器语言。这个源代码的可移植性在高级语言中指的是系统的环境(如操作系统、编译环境),而不是CPU所拥有的指令集!!!
高级语言的程序如果是编译形的,最后都会换成OBJ二进制文件,最后成都会换成汇编。但是高级语言的程序不是一行源代码就可以相应对等成一行汇编的!!就拿TC和8086汇编相比,我用TC写一个HELLO WORLD用好像是4K左右,而用汇编则只用700多个字节。TC的程序大同时也因为它里边有相应的头文件,而汇编则大为精简!!!
指令系统就是CPU能够认识的指令,也就是在设计CPU时固化到里边的指令!!
这是我作为一个IT勤杂工,学过几天编程的见解!!!
 
不同意,其实实现同一功能,用汇编肯定要比用高级语言代码多。比如简单的加,高级语言一条指令就可以,而在汇编中要好几条。可以这样说,几乎每一条高级指令,都需要好几条甚至更多的汇编语言来编译。
 
看来各位要去看看《编译原理》和《汇编语言》了。
 
‘腰子比猪大’是傻B,鉴定完毕!
 
王东迪:
  前面看到骂你的,这里就怪论。网站还可以。不懂《编译原理》的不一定是傻B。你的结论不对!!
 
不懂没有关系,但是不懂装懂,到处乱说,甚至误人子弟,就不好了。
 
汇编是将指令符号化,一个指令对应一条汇编语句,
高级语言将指令语言化,一条语句对应N条指令!
例如乘法:可以累加(执行多次加法指令,也可以直接用乘法指令(执行一次乘法指令),
这样编译出来的代码就不一样,不同的编译器采用的优化策略都不一样,出来的最终结果才不一样!所就出现了同样的一个程序有的编译器编译成4K,而有的只有2K!
 
干吗骂人,我什么都没学过,但是这个道理好象不需要学也应该懂吧,如果高级语言比汇编还要多用指令,那才是奇怪吧。那个叫王东笛的,举个用汇编比用高级语言语言还要指令少的例子出来,骂人总要理由吧?
 
TO 腰子比猪大:
你可能没有了解 指令 和 语句的区别 ,真诚的建议去看一下 编译原理,偶也只是偶尔接触过汇编,看过一点编译原理,觉得获益匪浅啊。。。。。对将来的编程中的程序的性能和兼容性的提高很有帮助
 
这个东西头疼,看看吧 ^V^
 
后退
顶部