X86_64汇编学习记述三
字符串 反转字符串 4个常量 解析 从_start开始 把INPUT地址放入rsi寄存器 通过异或将rcx清零 用cld清除方向标志位,让后续字符串操作从低地址向高地址进行。 保存返回地址,当exitFromRoutine结束后,正确返回 calculateStrLen 先判断r...
字符串 反转字符串 4个常量 解析 从_start开始 把INPUT地址放入rsi寄存器 通过异或将rcx清零 用cld清除方向标志位,让后续字符串操作从低地址向高地址进行。 保存返回地址,当exitFromRoutine结束后,正确返回 calculateStrLen 先判断r...
关于窗口实现 代码 Github 资源文件 工程目录下建立uires目录,里面存放一些工程用到的资源文件,包括图片以及一些XML文件。 同时uires目录下应该还有个uires.xml文件,里面定义程序中用到的其他资源的类型和名称。 入口函数 主窗口 非模态窗口从SHostWnd...
启动流程 BasicEntry 作为dll导出接口 PrepareEnv 先构建运行时 ntdll.dll kernel32.dll 获取当前dll句柄 EXE被当做DLL加载时,首先修复重定位数据,此时的全局变量等还无法访问 因为Windows操作系统不会修复当做DLL加载的E...
ATL下载 ATL 作为微软官方库,源码随 Visual Studio 安装包 默认集成 正确代码结构 接口定义(使用 IDL) 实现类(使用 ATL) 对象创建宏 客户端调用示例 完整示例 项目结构 ExampleComponent.idl 在 Visual Studio 中创...
线程调度概述 每个线程都有一个上下文,这个上下文保存在内核对象中。它反应了线程上一次执行时CPU寄存器的状态。 大概每个20ms(GetSystemTimeAdjustment函数的第二个参数的返回值),Windows都会查看所有当前存在的线程内核对象。 这些对象中,只有一些被认...
SetMsgHandled 当用户在自己的消息映射表中增加一个消息处理函数,而且是插入在映射表的CHAIN_MSG_MAP(SHostWnd)前(也应该在此之前,否则很可能就收不到消息)。 默认情况下会自动标志该消息已经被处理了,如此一来就不会继续交给SHostWnd处理。 解决...
示例代码 WinDbg分析 启动调试 编译并运行程序 使用VS编译生成test.exe,并双击运行 附加到进程 启动 WinDbg,选择 File > Attach to Process,找到并选择运行的死锁程序 暂停程序执行 在 WinDbg 中,点击工具栏上的暂停按钮 ...
概述 什么是完成端口 Windows 的 I/O 完成端口(I/O Completion Ports, IOCP)是一种高效的 I/O 复用模型 广泛用于构建高性能的网络服务器和其他需要处理大量并发 I/O 操作的应用程序 完成端口(Completion Port)是 Windo...
大小端 可以将内存想象为一个大数组。它包含字节。 每个地址存储内存“数组”的一个元素。每个元素都是一个字节。 例如我们有 4 个字节:AA 56 AB FF 小端字节序 低地址存低位字节 大段字节序 高地址存低位字节 汇编程序组成 data 用于声明初始化数据或常量 bss 用于...
进程的关联性 通常,进程中的线程可以在主机的任何CPU上执行。 然而,也可以强迫线程在可用CPU的一个子集上运行,这一点叫“处理器关联性”。 子进程继承了其父进程的关联性。 进程的错误模式 与每个进程都关联了一组标志。 这些标志的作用是让系统知道进程如何相应严重错误,包括磁盘介质...
搜索当前标签