打印

想了20年的一道小学生题目(奖金30元): 答案在61楼

[复制链接]
楼主: Cortex-M0
手机看帖
扫描二维码
随时随地手机跟帖
41
Cortex-M0|  楼主 | 2012-4-12 13:16 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
楼下盆友继续,顶贴者人人有分~~~   

哪位达人行行好,指点一下,帮俺解答这一道小学生题目,奖金30元~~~

使用特权

评论回复
42
刘前辈| | 2012-4-12 16:04 | 只看该作者

LZ是不是有点失态……

本帖最后由 刘前辈 于 2012-4-12 16:17 编辑
#39楼
图片真伪先不说,结果,程序所占Flash增加了N多~~~  


#39楼真有意思,LZ自己27楼玩了半天不就是想追求这个结果吗?——你怎么知道程序所占Flash增加了许多?中断C程序一共只有5字节指令,if(TI)_nop_;……那叫实验伪指令!是照抄你的!/color]  
   JNB
   NOP
   NOP

其它都是编译器自动产生的保存/恢复全部13个寄存器所必须的。——我还以为LZ能一字节完成自动存储8051单片机13个寄存器呢。这不是PC机论坛。


LZ真有意思,保存/恢复一个寄存器至少需要 PUSH/POP 两条单字节指令,13个寄存器至少需要26条单字节指令,——LZ抱怨说我比你多用了26条指令?!——你想了3年也没实现编译器自动存储/恢复全部13个寄存器,而我2天就完成了;所以,无论你指令再简约,或者我程序再臃肿,你都是一个失败者。就别再找失败的理由啦……

四十几岁的女性,不是小孩子了。——先出 300元奖金,一听说我完成了,马上说自己穷,没钱,300元立马降到30元?——如今我贴出了结果,你又这原因,那原因,还周老虎都出来了;俺心里就弄不明白了:你着什么急?上什么火?30元就气急败坏啦?至于么?没人想要你30元,要不,我倒输你3,000元好不好?

周老虎?你若有周老虎的本事,也造一个跟我一样的假图试试?否则,你被周老虎耍了也只能抱怨自己无能。


、、

使用特权

评论回复
43
Cortex-M0|  楼主 | 2012-4-12 16:12 | 只看该作者
呵呵,LS别拐弯,程序是在您的指导下编写的,严格的说,是抄您的!

任何实验,都需要列出方法,让其他网友克隆照抄验证通过。

否则。。。。。。。请自已独个玩吧,俺没兴趣~~~


继续做广告:
哪位达人贵人行行好,指点一下,帮俺解答这一道小学生题目,奖金30元~~~

使用特权

评论回复
44
刘前辈| | 2012-4-12 16:51 | 只看该作者
LZ确实有些糊涂,main.c ,  os.c ,有没有看上去眼熟?你自己写的OS程序这么快就忘啦?当然,是抄所长的,当时把所长吹得神乎其神,原来自己当时没看懂啊?

我是在你的(所长的)OS程序项目基础上加入的 int.c ,与你的——或者说是你抄所长的OS——主函数根本没联系,STARTUP.A51 哪来的?哈!我怎么知道?问你自己呀?嘻嘻……,不高兴你把它删掉吧,我才不关心。






、、
、、

使用特权

评论回复
45
Cortex-M0|  楼主 | 2012-4-12 17:09 | 只看该作者
LS确实有些糊涂,main.c ,  os.c ,都是抄 highgear老师的示范程序, 没错!!!

但编译后,两个程序的总长度不同,详见 41楼,前一个编译后的程序总长度不到 700H,而LS盆友的示范程序,长度为多少呢?程序总长度已超过了990H ,  程序长度增加了 290H之多,难道让编译器自动保存/恢复全部13个寄存器所需要用到这么多字节?


任何实验,都需要列出方法,让其他网友克隆照抄验证通过。

否则。。。。。。。请自已独个玩吧,俺没兴趣~~~

继续做广告:
哪位达人贵人行行好,指点一下,帮俺解答这一道小学生题目,奖金30元~~~

使用特权

评论回复
46
刘前辈| | 2012-4-12 17:14 | 只看该作者

搬起石头砸了自己的脚……

本帖最后由 刘前辈 于 2012-4-12 17:50 编辑
#41楼

……再根据38楼:盆友示范程序所示,加入了STARTUP.A51,编译后的程序总长度不到 700H,而38楼:盆友的示范程序,长度为多少呢?程序总长度已超过了990H ,  程序长度增加了 290H之多, 这个这个水平之高。。。。。。俺小学生永远也比不上~~~  



下面是谁写的程序?那个自己号称能建立50个任务,那个敢于创新的人是谁?是谁在自己的程序里加了个STARTUP.A51 却推赖在俺刘前辈身上?自己算了半天,却不知道把错误全算在了自己的头上!太可笑了。

        ——我吃饱了撑的?往你程序里加东西?和我INT.C模块何干?

欲加之罪,何患无辞? 有点太卑劣了吧。






、、

使用特权

评论回复
47
Cortex-M0|  楼主 | 2012-4-12 17:20 | 只看该作者
啥都别说~~~

真牛X的话,请贴上示范程序,让大家验证~~~

否则,请一个人吃饱了撑了,独自玩吧,俺没兴趣~~~  :lol



继续做广告:
哪位达人贵人行行好,指点一下,帮俺解答这一道小学生题目,奖金30元~~~

使用特权

评论回复
48
刘前辈| | 2012-4-12 17:42 | 只看该作者
算了,这种人别玩了。前辈的INT.C 编译后长度是26+5(实验伪指令)=31字节。小学生都算得出。其他的main.c,os.c 都是LZ和所长的东西。与我无关,LZ自己爱怎么算怎么算去吧!

   我研究的是51中断C函数如何不加入汇编能自动存储全部13个寄存器,——才不关心你主函数是什么,别把我和任何主函数(包括你的,所长的)扯到一起。你和所长的程序我没有兴趣。——连编译都通不过,不值得研究。


、、

使用特权

评论回复
49
刘前辈| | 2012-4-12 18:01 | 只看该作者
我认为四十几岁的女性应该是有气质,内涵,行为典雅;像那些给我们讲课的女教授。

否则;留给人的只剩下衰老的皮肤,孤独,剩女谁看的起?


、、

使用特权

评论回复
50
Cortex-M0|  楼主 | 2012-4-12 18:02 | 只看该作者
呵呵,不玩就不玩,您留着独自玩吧~~~  



继续做广告:
哪位达人贵人行行好,指点一下,帮俺解答这一道小学生题目,奖金30元~~~ :lol

使用特权

评论回复
51
highgear| | 2012-4-12 22:20 | 只看该作者
这个刘工工.......................:D:lol

使用特权

评论回复
52
highgear| | 2012-4-12 22:28 | 只看该作者
四十几岁的女性,不是小孩子了。——先出 300元奖金,一听说我完成了,马上说自己穷,没钱,300元立马降到30元?——如今我贴出了结果,你又这原因,那原因,还周老虎都出来了;俺心里就弄不明白了:你着什么急?上什么火?30元就气急败坏啦?至于么?没人想要你30元,要不,我倒输你3,000元好不好?


我们的刘工工总是习惯性的祭出东厂刘 氏 大 法 .......

使用特权

评论回复
53
Cortex-M0|  楼主 | 2012-4-13 03:12 | 只看该作者
刘 氏 大 法 ,  天 下 无 低 .......        您留着独自玩吧~~~  



继续做广告:
哪位达人贵人行行好,指点一下,帮俺解答这一道小学生题目,奖金30元~~~ :D

使用特权

评论回复
54
crossfirexyj| | 2012-4-13 09:52 | 只看该作者
不会汇编阿

使用特权

评论回复
55
Cortex-M0|  楼主 | 2012-4-13 10:03 | 只看该作者
不会汇编 正好用 C  

本例程序要求全部用C编写,不得插入汇编~~~

使用特权

评论回复
56
lxyppc| | 2012-4-13 10:40 | 只看该作者
本帖最后由 lxyppc 于 2012-4-13 10:43 编辑
四十几岁的女性,不是小孩子了。——先出 300元奖金,一听说我完成了,马上说自己穷,没钱,300元立马降到30元?——如今我贴出了结果,你又这原因,那原因,还周老虎都出来了;俺心里就弄不明白了:你着什么急?上什么火?30元就气急败坏啦?至于么?没人想要你30元,要不,我倒输你3,000元好不好?
刘前辈 发表于 2012-4-12 16:04

楼主这题目出来的第一天就说是30元。

楼主想搞明白,大家都只是改了下int.c文件,为啥编译出来一个是700H,一个是990H

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
Cortex-M0 + 1
57
zhaofy521| | 2012-4-13 11:41 | 只看该作者
继续围观,让暴风雨来的更猛烈些吧

使用特权

评论回复
58
ZZZZSSSSHHHH| | 2012-4-14 20:52 | 只看该作者
:L

使用特权

评论回复
59
aihe| | 2012-4-15 17:45 | 只看该作者
……这坛里的奇人异士,前辈绝对算一个……
ejack 发表于 2012-4-11 07:52


能算“西毒”吧

使用特权

评论回复
60
laoxu| | 2012-4-18 07:10 | 只看该作者
呵呵,高手都很忙,没空,俺来解一下吧~~~


根据 33楼:highgear老师的理论

一个简单的方法是:在中断中嵌入一句汇编,比如 nop. 此时, Keil 会把所有 context register (r0-r7,A,B,dptr,psw)push/pop.  ...
highgear 发表于 2012-4-11 21:58


得出结论,只要在中断中嵌入一句汇编,Keil 会把所有的 context register (r0-r7,A,B,dptr,psw)push/pop 。





再根据 6楼:airwill老师的理论

这的确是一个难题, 不在于怎么解决, 在于最佳的效果.
本人和不赞成用库的办法. 增加了无关的程序更少令人讨厌!
所以我在做任务切换函数时, 使用的是插入了汇编代码的办法,
破坏了C代码的美感?  是啊, 我也不喜欢.
于是, 我用很精练的一个查表的汇编代码, 用 C  进行了"包装", 最后就让人 "不见一行汇编代码".
...
airwill 发表于 2012-4-9 09:41


得出结论,可用很精的一个查表的汇编代码, 用 C  进行了"包装", 最后就让人 "不见一行汇编代码"。



将两位老师的经典之作,组合在一起,就能完成这一道小学生题目。

并且中断C函数不用单独列出,写成一个单独的模块,可在任何模块中,随时按需指定调用,适用于任何版本的 Keil C51。


DEMO程序如下:

typedef  void (* TaskCallback)(  );

code  char  protection[1] = {0x22};    // RET 返回

void  timer0(  )  interrupt  0
{
    ……
    (*((TaskCallback) protection))(  );
    ……
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则