| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2174 人关注过本帖
标题:T.P版.模拟cpu什么意思阿。这题.....
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
没错的,就是这个意思。看会hello,world!那个,就可以写输出hey you!就是要你自己找出替代hello,world的是哪些。同时给出3+2,也会要求你懂12+34。最顶头的资料给了减法代码,也有可能要求你会做减法运算。你做功课如果不充足,到时头头一试你就知底细,所以别想取巧,让人给你答案,也不是有些人以为的只要会做4+5就算“程序能够使用了”。

[ 本帖最后由 TonyDeng 于 2012-3-9 15:29 编辑 ]

授人以渔,不授人以鱼。
2012-03-09 15:26
clcqifeng
Rank: 2
等 级:论坛游民
帖 子:101
专家分:17
注 册:2012-2-16
收藏
得分:0 
回复 11楼 TonyDeng
01000001 00001100
01000010 00100010
00100011

这个就是12+34阿。。。我看得懂阿...问题是如何让 0001 为复制。。00011110为复制r1复制到r2那样。。。。我不懂如何让二进制变成那个意思....
2012-03-09 15:32
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
寄存器:
r1 0100
r2 0010
r3 0001 (修正,之前写了0011是错的,应是0001,下同改)

赋值(复制):0100

把某值赋给r1: 0100接0100 即01000100 接数据值
把某值赋给r2: 0100接0010 即01000010 接数据值
把某值赋给r3: 0100接0001 即01000001 接数据值

加法:
如果是r1+r2,那么(0100)|(0010)=0110,把这个结果赋给r2则在前面写r2的代号00100110
如果是r2+r3,那么(0010)|(0001)=0011,把这个结果赋给r2则在前面写r2的代号00100011

如此类推……

[ 本帖最后由 TonyDeng 于 2012-3-9 16:09 编辑 ]

授人以渔,不授人以鱼。
2012-03-09 15:52
clcqifeng
Rank: 2
等 级:论坛游民
帖 子:101
专家分:17
注 册:2012-2-16
收藏
得分:0 
回复 13楼 TonyDeng
没接触过这类题。。。
你给我个
0001         复制操作
00011110       复制r1到r2
00010110       复制r2到r1

上面这三个东西的例子我看看好不
2012-03-09 16:22
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
都是按上面那样猜的,要自己找证据。

复制r2到r1,看上去就是0001(复制)+0100(r1)|0010(r2)=00010110
复制r1到r2,看上去应该是0001+0010|0100=00010110,我不知道1楼那里1110是不是错了,因为还没找到别的证据证实到底应该如何,所以说需要时间慢慢摸索。

总之,你按照这样的模式去猜,最后能把所有结论统一起来,就算是成功了。

授人以渔,不授人以鱼。
2012-03-09 16:36
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
如果你这里主要做web的,我开始怀疑这个训练是不是想破解密码。

授人以渔,不授人以鱼。
2012-03-09 16:42
clcqifeng
Rank: 2
等 级:论坛游民
帖 子:101
专家分:17
注 册:2012-2-16
收藏
得分:0 
回复 16楼 TonyDeng
不是。这里web是比较低的.然后往上有个什么忘了.再上去是手机的...
0001             复制操作
00011110       复制r1到r2
00010110       复制r2到r1    你给我这个复制的代码例子我看看...没接触过这类题要怎么开始都不知道阿
2012-03-09 16:46
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
15楼不是给了吗。就算我要做这题,也是像上面那样不断地猜、证实、再猜、再证实……呀(我可没那么多时间),沉下心来做就是了。牛顿16年才写那么一本书,不过是三条基本定律和一些定义。不花时间做的事,价值也大不到哪去。不要贪快!

[ 本帖最后由 TonyDeng 于 2012-3-9 16:51 编辑 ]

授人以渔,不授人以鱼。
2012-03-09 16:47
clcqifeng
Rank: 2
等 级:论坛游民
帖 子:101
专家分:17
注 册:2012-2-16
收藏
得分:0 
回复 18楼 TonyDeng

这些我都懂。。。
问题是如何让0001|用程序把他变成复制意思。。然后如何让|0100 变成r1...
没接触过2进制赋意思之类问题...
=_=意思是给我个.

让0001|变成复制意思的代码我看看。。。
2012-03-09 16:52
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
哎呀,那是人跟机器的约定。人设计计算机硬件时,就约好用0001这个二进制数据代表复制,机器收到这样的指令,就去做指定的动作,硬件按照约定处理的。这就好比我们约定用十进制32表示空格字符(基于ASCII编码的约定)一样,假如有特殊需要,我们完全可以不按照ASCII编码进行约定,重新制定一份协议,比如将十进制32(即二进制00100000)处理成字符'A'(是字符还是数值,前面还有一个类型协议,附加上去,编程者和计算机就知道按什么办,这就是类型声明的作用)。计算机的内部操作,就是像这个题目那样做的。因此,这只是观念中的约定,你是人,只要按照约定上面所说的那些约定,写出00010110,那么这颗CPU就会按照设计电路自动做对应的动作。

对汇编来说,用mov助记0001,就可以把二进制指令写成mov r1,r2这样的代码形式,这个指令在编译后,就会转化为00010110,机器就认后面这个,人认前面那个。为了提高效率,人们把若干常用的汇编指令进一步编制助记符,就成了诸如C那样的计算机语言。所谓的编译器,就是把这些约定反向翻译成最终机器二进制编码。这些东西,在《编译原理》课程中会讲,也会教你具体怎么做,现在只是让你有个概念罢了,毕竟你最终不需要自己做编译器。

CPU按照什么契约做动作,是设计时给出的,你要使用这颗CPU,就要按照它的约定写机器码,但你实际上不必写二进制机器码,这样的粗重工作完全可以交给专门编制的编译软件去做,人只要按照所需要的逻辑、用各种不同的高级编程语言写好程序,编译软件自己会按照约定把它们翻译成对应的机器码。因此,我们平常所写的程序代码,全部是给人看的,计算机根本不懂看那些代码,连汇编也不懂。

[ 本帖最后由 TonyDeng 于 2012-3-9 17:14 编辑 ]

授人以渔,不授人以鱼。
2012-03-09 17:03
快速回复:T.P版.模拟cpu什么意思阿。这题.....
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.072083 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved