您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > C++反汇编基础-第2讲:数据类型
北风网逆向工程培训第二讲:数据类型讲师:Glorevo(北风网版权所有)C++反汇编基础:Win32平台机器数原码◦表示真实的数值,最高位为符号位反码◦正数:与原码相同◦负数:原码除符号位,各位取反补码◦正数:与原码相同◦负数:反码加1以1为例◦原码:0x00000001◦反码:0x00000001◦补码:0x00000001以-1为例◦原码:0x80000001◦反码:0xFFFFFFFE◦补码:0xFFFFFFFF内存中的数是以补码形式存在的机器数运算:以整数减法为例数值5◦补码:0x00000005数值2◦补码:0x00000002数值-3◦原码:0x80000003◦反码:0xFFFFFFFC◦补码:0xFFFFFFFD5-3◦=5+(-3)◦=0x00000005+0xFFFFFFFD◦=0x0100000002◦由于整数在内存中占用4字节,因此进位丢失,最终结果为2。整数占用内存◦int:4byteslong:4bytesshort:2bytes取值范围◦unsignedint:0x00000000~0xFFFFFFFF◦signedint:0x80000000~0x7FFFFFFF存储方式◦大端模式:低字节存放高位0x12345678◦小端模式:低字节存放低位0x123456781234567878563412浮点型占用内存◦float:4bytesdouble:8bytes编码方式floatdouble尾数0~22位0~41位阶码23~30位42~62位阶符第30位第62位数符第31位第63位内存中的浮点数(以float为例)十进制:10.75二进制:1010.11科学计数:1.01011×22符号位:0阶码:十进制3+127,二进制10000010尾数:01011000000000000000000完整表达:01000001001011000000000000000000十六进制:0x412C0000浮点寄存器浮点寄存器共11个◦8个浮点数据寄存器,编号为FPR0~FPR7◦浮点状态寄存器◦控制寄存器◦标记寄存器寄存器空间为80位◦单精度:32位◦双精度:64位◦扩展精度:80位采用栈的工作方式,编号ST(0)~ST(7)浮点操作指令FLDsrc:将浮点数src压入ST(0)FILDsrc:将整数src压入ST(0)FSTdst:取浮点数ST(0)到dst,不影响栈状态FISTdst:取整数ST(0)到dst,不影响栈状态FSTPdst:取浮点数ST(0)到dst,执行出栈操作FISTPdst:取整数ST(0)到dst,执行出栈操作FCOMsrc:ST(0)与src进行比较,影响标志位FTST:测试ST(0)是否为0.0,影响标志位FADDsrc:ST(0)与src相加,结果存入ST(0)本课程学习地址:C++反汇编基础:Win32平台(逆向实例、动态调试实例)欢迎访问我们的官方网站
本文标题:C++反汇编基础-第2讲:数据类型
链接地址:https://www.777doc.com/doc-7598419 .html