致力于提升研发企业的持续创新能力

结盟众多企业“教练”, 共同设计、开发及提供人才培养解决方案,通过新颖多样的学习方式,针对性的定制化内容,助力企业全面提升竞争优势。

课程分类列表

64位编程与调试
课程类别:开发语言工具

调试

课程讲师:

张银奎

课程周期:

2天

课程费用:

5200元/人

本课程培训周期为2天 如何把现有的32位程序迁移到64位?开发64位的软件与开发32位软件有哪些相同和不同?CPU是如何执行64位程序的?64位系统中是否还可以运行32位的程序?如何调试64位的程序,有哪些新的挑战? 围绕以上问题,本培训将从CPU、操作系统、编译器、调试器、驱动程序、应用程序六个角度系统介绍开发和调试64位程序所需的知识和技巧。培训内容针对x64 CPU和Windows平台。培训方式以理论讲解和代码分析为主,辅以实例演示和动手实验。

概况

培训方式:演讲,演示和动手试验

培训对象:软件开发工程师,测试工程师,架构师,技术负责人

主要内容

课题 描述
第一部分:理解x64 CPU
(2.5小时)
64位模式
兼容模式
EFER寄存器
模式切换
寄存器集合
段寄存器
页表结构
任务状态段(TSS)
任务寄存器(TR)
IDT
64位与32位的比较
以Intel64为例,系统介绍x86 CPU的64位工作模式,切换到64位模式的过程,64位模式下的寄存器,内存组织,任务管理,中断响应,和指令集增强
第二部分:Windows的64 位版本(2.5小时) Windows的64位版本
架构概览
内存布局
系统目录和文件布局
基于表的异常处理机制
WOW64
文件签名
内核增强
以Windows Vista的x64版本为例,介绍64位Windows操作系统与32位版本的主要差异,包括内存布局变化,基于表的异常处理机制,兼容32位程序的WOW64设施,内核中的安全增强
第三部分:构建64 位程序(1.5小时) x64目标
异常处理
调用规约
嵌入式汇编
x64 intrinsic
/favor
/Wp64
可执行文件格式PE32+
以Visual C++编译器(VS2008)为例,介绍编译器的64位支持,编译64位程序的一般方法,新的编译选项,调用规约,不再支持的功能(比如嵌入式汇编)
第四部分:编写和迁移64 位应用程序(2.0小时) 数据类型
LLP64编程模式
-Win 64
-Linux 64
预处理宏
_M_IX86
_M_AMD64
_WIN64
移植到64位的常见编译错误
典型代码问题
案例(真实项目迁移)
注册表和文件重定向
不再支持的API
新的API
设计兼容64位的数据结构和接口
介绍编写64位应用程序,特别是为现有32位程序增加64位支持所需的方法,包括如何使用预处理宏来保证代码的兼容性,如何修改存在兼容性问题的代码,典型的编译错误和警告,寻找编译器无法发现的问题等
第五部分:编写和迁移64 位驱动程序(2.0小时) 为什么不支持32位的驱动?
数字签名
数据类型
预处理宏
__AMD64__
__IA64__
内存对齐
支持两种应用程序
IoIs32bitProcess()
不兼容的DDI
HalGetBusData()
更新INF文件
常见移植问题
- Hook
- 嵌入式汇编
与32位应用程序还可以在64位系统中运行不同,64位系统中不可以加载32位的驱动程序,因此如何把32位的驱动程序移植到64位常常显得更加急迫,本节将介绍编写和迁移驱动程序的方法和技巧,包括如何通过宏来兼容两种版本,如何同时支持32位的应用程序和64位应用程序,如何修改旧代码中对淘汰DDI的调用等。
第六部分:64位调试(1.5小时) 选择调试器
WinDBG
表达式
栈回溯
参数历史
有助于调试的编译选项
函数序言和结语
调试驱动程序
调试64位应用程序
调试32位应用程序
分析转储文件
本节有两个目标,一是复习和巩固前面所讲的内容,二是介绍调试64位程序时应该注意的地方,包括如何选择调试器,如何观察栈回溯,寻找父函数的参数值,并通过实例分别演示调试64位驱动程序、32位应用、64位应用和转储文件的技巧。
找到所需课程了吗?即刻 填写申请表格 与我们联络吧