汇编网首页登录博客注册
Wednesday的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
好友圈
文章收藏
友情链接

[2007-11-06 14:57] 推荐博文 EXE是怎样炼成的----冰山一角

图片载入中
嘿嘿
评论次数(39)  |  浏览次数(5507)  |  类型(冰山俯拾) |  收藏此文  | 

[  游客   发表于  2007-11-06 19:29  ]

EXE都被你扒的一丝不挂了,o(∩_∩)o...哈哈

[  jokyzhuang   发表于  2007-11-06 19:46  ]

好爽^_^

[  dreamhk   发表于  2007-11-07 11:49  ]

现在还不能完全理解...收藏先

[  sunshine   发表于  2007-11-07 13:01  ]

了解

[  游客   发表于  2007-11-07 18:25  ]

他利害了
顶一下!

[  jokyzhuang   发表于  2007-11-07 19:02  ]

大图显示不了啊

[  Wednesday   发表于  2007-11-07 21:55  ]

不是吧

[  游客   发表于  2007-11-10 09:39  ]

怎么程序没有main函数呢?

[  游客   发表于  2007-11-14 11:16  ]

太利害了,反汇编耶

[  Wednesday   发表于  2007-11-14 11:39  ]

[  游客   发表于  2007-11-10 09:39  ]       [ 删除评论 ] 
怎么程序没有main函数呢?


[  lion   发表于  2007-11-10 16:50  ]       [ 删除评论 ] 
博主已经炼成“冰山四角”了,呵呵。 

回答楼上的兄弟提得问题: 
我觉得博主写这个程序主要是展示一下函数调用时传参的过程,并不是写的有实际用途的程序。所以明白原理就好,不要较真,自己也可以写个带main的debug试试。我这样试的 
/*a.c*/ 
main() 

  int a = 1;     

不要自动编译链接,分别进行 
tcc -c a.c 
tlink a.obj 
debug加载就是汇编代码。
                 -----摘自《 EXE是怎样炼成的----冰山三角 》

[  游客   发表于  2007-11-14 13:46  ]

汇编语言的子程序调用<----->c语言的子程序调用

            栈

[  游客   发表于  2007-11-14 13:52  ]

应该说C语言是高级语言中同汇编最接近的吧

[  游客   发表于  2007-11-14 18:25  ]

C:
低级的高级语言;
高级的低级语言。

哈哈,有点儿笼统,道理就是这个。

[  游客   发表于  2007-11-27 20:17  ]

神奇的c,神奇的汇编
用汇编分析C
--------------利害,学习了

[  游客   发表于  2007-12-05 11:12  ]

编译器,汇编器,连接器造就了exe。  装载器成就了exe。
调试器XX了exe

[  游客   发表于  2007-12-14 09:43  ]

分析研究问题的好方法,学习了

[  游客   发表于  2008-01-08 17:34  ]

顶了!

[  游客   发表于  2008-01-08 17:37  ]

tlink a.obj
  
不连接c0s,直接生成exe进行反汇编,好方法。

[  Wednesday   发表于  2008-01-08 22:38  ]

http://www.asmedu.net/news.jsp?index=198

我觉得,应该先看这篇文章

再看——EXE是怎样炼成的

[  游客   发表于  2008-01-23 12:37  ]

好文章 :)

[  游客   发表于  2008-02-20 18:55  ]

看来学会编,对理解C等高级语言的帮助是相当大的阿!

我试了一下,反编译后怎么有很多汇编指令不知道在干什么啊?!!

[  游客   发表于  2008-03-07 11:16  ]

有本翻译的<汇编语言程序设计>专讲这个的,很棒。
从C和C++入手 讲解汇编

[  游客   发表于  2008-03-08 12:49  ]

作者?出版社?

[  wuerlang   发表于  2008-04-04 12:02  ]

EXE是怎样炼成的----冰山X角 !呵呵~~~我喜欢!每当我用起WIN32DASM的时候,时常会想起它们啊。

[  游客   发表于  2008-05-23 14:51  ]

老大,程序有问题吧,你是不是信手写的,在机器上跑了吗?不对的

[  Wednesday   发表于  2008-05-23 15:33  ]

当然不是信手写的。呵呵。

只是这个程序精简了很多逻辑,只有一个功能函数f(),实现了以循环方式为int型数组buf的每一个元素赋初值,并返回整型数 1 的功能。

在这里之所以精简到如此程度,完全是为了说明C语言编译器在编译C源程序时把变量声明,变量赋值,循环,返回等等机制是如何解释并描述为汇编语言代码的,这个程序没有太大的意义,并不是要完成什么实际的有意义的功能,只是为了通过可执行文件的内容的对照,从指令角度体现C语言和汇编语言的联系的一个侧面。此系列其他文章也是如此。

呵呵,谢谢上面游客提示,督促我又将我制作这些文章的初衷表达的更清晰了一些。

PS:

这个程序的编译和连接过程:
C:\DOCUME~1\ADMINI~1\tc>tcc -c f.c
Turbo C  Version 2.0  Copyright (c) 1987, 1988 Borland International
f.c:

        Available memory 407824

C:\DOCUME~1\ADMINI~1\tc>tlink f
Turbo Link  Version 2.0  Copyright (c) 1987, 1988 Borland International
Warning: no stack

C:\DOCUME~1\ADMINI~1\tc>f
正如上面的朋友所说,直接在保护模式下windows操作系统提供的命令提示符窗口中执行程序,会有错误提示框弹出——程序没有正确返回到命令解释器,在程序指令RET执行完后,我们不知道它会跳转到哪里,继续执行,更多时候,执行会遇到异常情况,这是可以预料的,但这不是我们关心的问题,在这里,我们主要是进行上面我所说的可执行文件信息(机器码——汇编语言代码)和C源程序代码之间的对照,体会,思考。而这个过程,我们在debug下完成即可。

[  游客   发表于  2008-05-25 10:20  ]

看不懂,先收藏。

[  lonelyboy   发表于  2008-06-13 12:21  ]

我也是菜鸟,收藏先

[  musicvs   发表于  2008-08-21 10:32  ]

呵呵~我也是菜鸟,看不懂

[  bpo   发表于  2008-11-01 12:37  ]

顶一个,非常不错,不过我C都忘得差不多了

[  szydy   发表于  2008-11-17 19:10  ]

淘宝网有反汇编服务,能对EXE或DLL文件详细地分析,效果不错,大家不妨一试。

[  huibian   发表于  2008-11-21 15:52  ]

好的文章得顶一下,学完汇编的兄弟可以看一下,对c语言的学习也很有帮助的。

[  acool   发表于  2008-11-22 12:31  ]

顶顶 正准备深入一下c呢 thanks

[  游客   发表于  2008-12-08 17:42  ]

不错的分析,顶下~

[  游客   发表于  2008-12-11 11:11  ]

学完汇编研究一下,支持博主

[  starrynight   发表于  2009-10-07 11:33  ]

真是冰山一角,居然这帖子沉了,呵呵

帮顶一下。

[  游客   发表于  2009-10-07 13:52  ]

还真是好文

错过可惜

[  游客   发表于  2009-11-17 18:15  ]

就这种东西还有很多人认为有水平,更怪的是这个人还好意思把这种烂东西发出来。唉~~~~~~~~~·
EXE文件??看来你对计算机系统的基本认识还差的很远。这个网站里绝大多数都是初学者,以后不要发这种东西来祸害人了

[  游客   发表于  2010-03-05 16:20  ]

楼上的送给你句话,必能印证你的人生:
    "一个人的能力大小与其自认为的能力大小成反比。"-出处不具

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码