正在阅读:《编程高手箴言》读后(4)《编程高手箴言》读后(4)

2004-04-08 14:39 出处:CSDN 作者:seacloud 责任编辑:sdq

  汇编语言中一部分是代码,另一部分是数据,在汇编内是很清楚的。
=========================================
  我觉得恰恰是在汇编代码里数据和代码是分不清楚的,因为这完全取决于你让CPU怎么解释你生成的这些0、1串。其实大家都明白,在汇编代码里用db伪操作来将一些数字定义为代码的例子实在是太多了。

  《箴言》一书中在4.1.1中最后的部分讨论了一点点程序链接的信息。
=========================================
  其实程序的链接和加载要远远复杂的多,用一本书描述都不为过。推荐大家去看看John R. Levine的《Linkers & Loaders》。这本书你哪怕看明白了十分之一,都会更有收获。

  编程时一定要有一个好习惯,即数据和代码放到不同的地方,而不要在数据中插入一些变量的申明。只有这样,才能让编译器非常容易的处理数据......这样因为编译的原因产生的错误就少了。
=========================================
  呵呵,编译器才不管你程序怎么写呢,只要你符合相应的规则 :-) 第一次看到有这样一种编程原则是用来防止编译器出错的。如果你的程序符合语言的语法定义,而且又是逻辑正确的,那么如果汇编出错我建议你去换个编译器。你又没有编译器代码,怎么可能知道什么样的代码会让编译器“舒服”呢?

  其实在Windows内,TextOut有两个函数相对应。
=========================================
  用NT技术构建的windows各种版本,内核都是unicode的,如果调用ANSI版本的API,系统会在后台做转换,所以我们在coding的时候就直接用纯unicode版本的API,应该可以有一点点的性能提升,呵呵:-)

  【实例】:自定义程序的入口点
=========================================
  在汇编语言里,程序的入口点其实是个标号而已,根本没有我们C/C++里的诸如main,WinMain之类的特殊要求。C/C++这种要求的原因是其实一个C/C++程序的入口点其实不是我们的程序,而是编译环境自己定义的一小段代码,而最后这一小段代码会call我们的函数。那么这一小段代码怎么知道我们的函数在哪里呢?要解决这个问题办法很多,最容易的就是替我们给出函数名字和原型。这也就是在C/C++程序里必须有main,或者WinMain的原因。

  《箴言》给出的这个程序的一个问题就是并没有正确的象WinMainCRTStartup那样的初始化运行环境。

察看评论详细内容 我要发表评论
作者笔名简短内容 发表时间
:

键盘也能翻页,试试“← →”键

相关文章

关注我们

最新资讯离线随时看 聊天吐槽赢奖品