基本概念
指令集
指令集概念
- 说指令集的时候必须指定CPU的架构:每种架构的CPU都有自己的指令集,x86架构的CPU有自己的指令集,ARM架构的CPU有自己的指令集
- CPU指令集就是CPU能够识别并执行的
二进制指令
的集合
指令集分类
- CISC
vs
RISC - 复杂指令系统计算机
vs
精简指令系统计算机
x86架构汇编
- Intel汇编:Intel公司的汇编,Windows平台下使用的汇编
- AT&T汇编: GCC中的使用的汇编
C语言分类
- ANSI C:标准C C89 C99 C11
- GUN C:
回调函数
- 回调的本质Callback:Don’t Call Me, I’ll Call You
- 显示器中所有的元素都会绘制出来的,即画出来的
学习Win32程序设计的条件
-
熟悉Windows操作系统:操作系统必须配合CPU
-
熟练掌握C语言:ANSI C
结构体
指针
C语言函数库:C语言的编译器提供的(编译系统提供);Win32 API是Windows操作系统提供的 -
开发环境:编译器、连接器 VC 6
-
函数调用约定:规定调用函数时实参进栈方向以及函数调用结束时的栈平衡由谁来维护(是由主调函数还是被调函数来平衡栈)
__cdecl
__stdcall
__fastcall(已经过时) -
从Windows 3.0开始,Windows操作系统开始对Intel 286、386、486的CPU的保护模式提供支持
-
GUI:what you see is what you get 所见即所得
-
窗口:一块矩形区域
Windows运行机制的核心:动态连接
Kernel32.dll:内存管理、IO管理、多任务管理…
User32.dll:窗口管理…
GDI32.dll:绘图管理…
Windows编程的API与C语言库函数的API的区别
- 调用Win32 API本质是系统调用,syscall,CPU的控制权从用户态切换带核心态,调用完了,CPU控制权又从核心态切换回用户态
- C语言的函数库是有编译系统提供的API,C语言函数库的API可能会调用Win32的API,也可能不会调用,例如printf函数内部肯定是一个syscall调用了Win32的API来实现的;strlen函数就无须调用Win32的API,因为自己就能实现
- Win32的API的代码在链接的时候并没有链接到目标程序中去,它的目标代码在DLL中,在执行的时候才动态加载的,链接的时候只是将API的位置信息写在了目标程序中
- 在程序链接的时候会将C函数库的代码链接到目标程序中去
- 操作系统提供 vs C语言的编译器提供
使用MFC开发应用程序的时候还会遇到MFC的DLL
Windows的DLL
MFC的DLL
C标准函数库
在使用MFC的时候一般都选择静态库,因为选择MFC的动态库的话,那么要求跑应用程序的计算机必须安装能够MFC的运行环境,这是不科学的
所有的Windows操作系统都会提供DLL,操作系统安装完成后就有了,因为操作系统自己也是依靠一堆DLL运行起来的 C:/WINDOWS/s