自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 收藏
  • 关注

原创 结构体的内存布局

结构体的内存布局为了提高内存访问效率,降低处理器从内存读取数据的开支,各种数据类型的对象并不是连续存放在内存中的任意起始地址上的,而是尽可能的对齐到机器字长上面。编译器出于优化的考虑,会给各种数据类型的变量在内存的存储方式施加限制,我们可以从两个方面来考虑这个问题,一个是对齐(alignment),另一个就是间距(padding)。1. 对齐各个变量在内存中的起始地址能够被变量所属类型的宽度所整除。比如说占据2个字节的 short 类型的地址应该是偶数,占据4个字节的 int 和 float 应该放到

2020-05-28 10:46:04 1246

原创 Win32 API (4) CreateProcess

CreateProcessCreateProcess 是一个宏,根据是否定义符号常量 UNICODE 展开为 ASCII 和 UNICODE 两个版本,其实如果不是必须更推荐使用 UNICODE 版本的 API 函数,因为即便是 ASCII 版本的函数,内核层面也是通过 UNICODE 版本来实现的。函数原型:// ASCII 版本BOOL CreateProcessA( LPCSTR lpApplicationName, LPSTR

2020-05-15 11:02:26 742

原创 Win32 API (3) ZeroMemory,SecureZeroMemory

ZeroMemoryZeroMemory 是一个宏,不是函数,它的定义如下:#define ZeroMemory RtlZeroMemory#define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length))我们发现,这个 ZeroMemory 是 RtlZeroMemory 的宏定义,而 RtlZeroMemory 是一个有参宏,最终是通过调用C标准库函数 memset 来实现的。下面为了方便,我们还是以函数原型的

2020-05-15 10:59:58 859

原创 Win32 API (2) lstrlen

lstrlen像很多和字符串有关的 Windows API 一样,lstrlen 是一个宏,有 ASCII 和 UNICODE 两个版本:#ifdef UNICODE#define lstrlen lstrlenW#else#define lstrlen lstrlenA函数原型:int lstrlenA( LPCSTR lpString);int lstrlenW( LPCWSTR lpString);函数原型除掉参数类型略有差异以外,其他都是完全一致的。该函数计算

2020-05-13 21:09:45 676 2

原创 Win32 API (1) WinExec

WinExec函数原型如下:UINT WinExec( LPCSTR lpCmdLine, UINT uCmdShow);该函数用于运行一个指定的应用程序,现在已经淘汰,仅用于保持对16位Windows操作系统的兼容,可以使用函数 CreateProcess 来代替。参数说明:lpCmdLine :运行程序所需的命令行参数(文件名+可选参数),若该参数中没有包含可执行文件的路径,将会自动按照下面顺序搜索可执行文件:应用程序被加载的目录当前目录Windows系统目录,该目录可

2020-05-12 11:11:10 741

原创 进位标志和溢出标志的含义和理解

进位标志和溢出标志这次大概总结一下进位标志(Carry Flag, CF)和溢出标志(Overflow Flag, OF)的含义和理解方式首先明确一点基本认识,处理器本身并不在意也不知道参与算术运算或者逻辑运算的操作数是有符号的还是无符号的。ALU总是为给定的操作数做二进制运算,并根据结果设置相应的标志位。因此,视参与运算的整数的实际情况,CF或者OF会被独立的置位或者清零。他们的含义是有程...

2020-05-05 19:23:59 24570 2

原创 通过虚拟机实现裸机汇编环境

通过虚拟机实现裸机汇编环境1. 简述操作系统带来便利的同时也引入了大量限制,在操作系统存在时,我们编写的程序不能直接被硬件加载。我们必须按照操作系统的约定,把程序编译成特定的可执行文件格式(比如Windows的PE文件格式,Linux的ELF文件格式)。执行程序时,由操作系统读取可执行文件,选择合适的内存空间,并将代码和数据加载到内存中相应位置,这样程序才能被处理器所执行,在程序执行过程中遇到...

2020-05-01 14:00:29 1693

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除