| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5635 人关注过本帖, 1 人收藏
标题:看看你C语言是什么级别
只看楼主 加入收藏
abc3210cba
Rank: 2
等 级:论坛游民
帖 子:63
专家分:97
注 册:2010-9-26
收藏
得分:0 
就这素质
2010-10-22 18:51
abc3210cba
Rank: 2
等 级:论坛游民
帖 子:63
专家分:97
注 册:2010-9-26
收藏
得分:0 
我新注册怎么了,我毕业的时候你还没听过C语言呢
2010-10-22 18:52
xiaomarn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:348
专家分:2026
注 册:2009-3-18
收藏
得分:0 
int main()
{
    char a[]={186,169 ,1,187,1,0,180,64,185,12,0,205,33,180,1,205,33,180,76,205,33};    /*其实是代码,机器码*/
    char s[]="hello world!";

    asm call far ptr d@
    return 0;
}
失败啊,还是加了一句汇编,不是纯C(主要是c还没到家,不!,没摸到边,不会用c跳到数据区去,努力ing....)loop
在电脑看来数据和代码是一样的,在我们看来的数据其实也是代码(在这里,我让计算机跳到我们定义的数组a让它执行了我的数组a),这一切只要看你要求电脑怎么做了。
ip指向什么,什么就是代码!
还有个小问题,就是关于数组a和s的定位(搜索了半天内存才找到),他们不是相对于段组DGROUP产生偏移吗?
怎么是426d(不是我预期的关于_data段首的21d--数组a的长度,C和纯汇编的区别?)?
而CALL却能很好的定位!
期待高手指教
被blueg..打击了,不过“不懂汇编是无法了解c的真谛”--忘了谁说的了
潜水学习去了。。。


[ 本帖最后由 xiaomarn 于 2010-10-22 19:04 编辑 ]
2010-10-22 18:55
abc3210cba
Rank: 2
等 级:论坛游民
帖 子:63
专家分:97
注 册:2010-9-26
收藏
得分:0 
MD你们私人吵架就发消息啊,又没指名的,谁看不认为你是来炫的
2010-10-22 18:57
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:0 
回复 21楼 abc3210cba

你奶奶的素质很好,看见这样一个帖子就说人家炫。

/images/2011/147787/2011051411021524.jpg" border="0" />
2010-10-22 18:58
abc3210cba
Rank: 2
等 级:论坛游民
帖 子:63
专家分:97
注 册:2010-9-26
收藏
得分:0 
我素质好,我奶奶的素质也很好,这是你羡慕不来的
2010-10-22 19:02
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:0 
我很同情你,不会羡慕你,老子素质是不怎么样,你要找骂我也没办法。

/images/2011/147787/2011051411021524.jpg" border="0" />
2010-10-22 19:06
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
23 楼可以让 main 函数 return 到你的代码上。但要带个参数,是 main 原来应该返回的位置。你的带码执行完了,再返回 main 本来应该返回的地方。你小心的处理一下栈,别写错了就行了。


[ 本帖最后由 pangding 于 2010-10-22 19:08 编辑 ]
2010-10-22 19:07
东海一鱼
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:48
帖 子:757
专家分:4760
注 册:2009-8-10
收藏
得分:0 
不想看骂仗,不过这个堆栈代码还比较有意思。
typedef void (*StackFn)(void);

int main()
{
    char a[]={186,169 ,1,187,1,0,180,64,185,12,0,205,33,180,1,205,33,180,76,205,33};  
    char s[]="hello world!";

    //asm call far ptr d@
    StackFn pFn = (StackFn)a;
    pFn();

    return 0;
}

举世而誉之而不加劝,举世而非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。彼其于世未数数然也。
2010-10-22 21:16
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
收藏
得分:0 
IO越来越嚣张了 骂习惯了?

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2010-10-22 21:42
快速回复:看看你C语言是什么级别
数据加载中...
 
   



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

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