汇编和c和c++学习历程
来源:互联网 发布:中银淘宝校园卡 年费 编辑:程序博客网 时间:2024/04/25 18:49
先学汇编(16位和32位assembly),学习谭浩强的c程序设计,然后开始数据结构和算法。
最后回头再从头学c语言,但那时看的书就是c primer了。
学完c后,再学c++
1.用王爽老师的16位汇编书入门(已经看完,太简单了)
学到了基础程序设计方法。
这本书的重点就是如何自己编写中断处理程序。学这个内容关键的是编程的思想。在windows环境下中断是被保护了。
看完后就知道这本书太初级了,知识点太散了。
再找本清华大学的黑皮16位汇编书,里面总结得很好。
但不适合入门,因为里面的文字是句句是精典。
2.罗云彬的32汇编程序设计,才看到第五章,windows资源的使用。
好书,没得说了,学完16位汇编,就要看这本书。
理解32位汇编就是了解windows系统的工作原理。
消息循环机制和win32 api函数的调用
汇编不仅与硬件有关,还有操作系统有关。
调用操作系统功能,在dos下用中断,在windows下就是用api
java,c#对api进行了完全封装,visual c++ 对api进行部分封装就成为了MFC,但win32 汇编对api完全没有封装。
4.虽然谭浩强的书不是最好的,但一定是用来入门的。
把汇编和c语言的学习同时进行,有关硬件的马上看计算机组成原理,可以高效学习。
已经看到了指针那一章了。
5.在看谭浩强的c语言和罗云彬的书的同时有一个问题被偶关注。
在谭浩强第二版c程序设计的第172页中的“变量的存储类别”
定义一个变量可以定义成全局变量和局部变量,但为了模块化程序,也为了能进封装后方便直接复制到其它程序中用,首先考虑定义成局部变量。
变量的存储方式包括动态存储和静态存储。简单说动态存储就是用到时才申请内存,反之静态就是一执行程序就给变量申请内存空间。
局部变量是动态存储,主要用在子程序中。在编译成可执行文件时,只是存储一些变量信息。占用的文件磁盘空间比较小。在载入可执行程序后,只有在用到时才临时申请内存空间。
全局变量就复杂些,定义为全局变量的主要分成两类:
1.初始化过的非0全局变量放在windows 下的pe可执行文件的.data段,在编译成可执行文件后,必须完整占用文件磁盘空间(就是你定义多大空间就要占用多大的磁盘空间),在载入可执行程序时,该变量又要占用内存空间。而且在程序执行的全部时间内,这个内存空间一直使用,直到退出程序。
2.未初始化的或者初始化为0的全局变量会放到pe可执行文件的.bss段,在生成的pe可执行文件中只存储变量信息,不会把变量内容也存储进去的。该方式主要用来定义缓冲区。但在载入可执行文件时,一样要占完整的内存空间。
所以,在32位汇编中,同是定义成缓冲区,所定义缓冲区的代码(szBuffer db 100*1024 dup (?) 定义了一个100KB的缓冲区)最后编译成pe可执行文件的时候,生成的文件大小是不同的。
局部变量是用于子程序(也叫过程,函数都是同一个概念。)
以上是c语言书中谈及的。
用汇编的时候就要考虑到子程序的参数入栈的次序 和堆栈平衡的问题。这个在罗云彬书中说得很清楚了。
参数入栈的次序和堆栈平衡,这个问题在写程序的时候,编译器已经帮你代劳了。但在反汇编,进行逆向工程的时候就要懂得这个原理了。
谢谢吕泰昌同学的提醒,现在写上完整的,免得误导同学。其实这一些全部在罗云彬的32汇编上全提及了。
希望与csdn上的朋友一起进步。
记下自己的学习过程,努力做个游戏程序员。
- 汇编和c和c++学习历程
- 简述C和C++的学习历程
- 简述C和C++的学习历程
- 简述C和C++的学习历程
- 简述C和C++的学习历程
- 简述C和C++学习历程
- 简述C和C++的学习历程
- 简述C和C++的学习历程
- 简述C和C++的学习历程
- 简述C和C++的学习历程
- 简述C和C++程序员学习历程
- 简述C和C++程序员学习历程
- 简述C和C++程序员学习历程
- 简述C和C++程序员学习历程
- 简述C和C++程序员学习历程
- 简述C和C++程序员学习历程
- 简述C和C++程序员学习历程
- C和C++的学习历程
- android1.5所有ContentProvider
- 标签<logic:present>的使用 (转)
- struts标签使用举例--logic(转)
- 十二星座超级可爱的小笑话
- LAMP
- 汇编和c和c++学习历程
- 抽象类是否可继承实体类 (concrete class)?????
- 我的网站
- test
- 今天的心情情况
- 工人滹沱河剧集ujiuedgfwer
- 部分北方大部分的百分比
- 热烈祝贺个人主页开通
- 分火热和任何惹人谈话