逆向_02数据宽度,逻辑运算
数据宽度,逻辑运算
4位宽度表示
无符号数
- 0 1 2 3 4 5 6 7 8 9 A B C D E F
正数
- 0 1 2 3 4 5 6 7
负数
- -1 -2 -3 -4 -5 -6 -7 -8
- F E D C B A 9 8
8位宽度表示
无符号数
- 0 1 2 3 4 …… FF
正数
- 0 1 2 3 4 5 6 7 … 7F
负数
- -1 -2 -3 -4 -5 -6 -7 -8 … -128
- FF FE FD FC FB FA F9 F8 F7 F6 F5 F4 …
32位宽度表示
无符号数
- 0 1 2 3 4 …… FFFFFFFF
正数
- 0 1 2 3 4 5 6 7 … 7FFFFFFF
负数
- -1 -2 -3 -4 -5 -6 -7 -8 …
- FFFFFFFF FFFFFFFE FFFFFFFD FFFFFFFC…….
几个重要的计量单位
- BYTE 字节 8bit
- WORD 字 16bit 2字节
- DWORD 双字 32bit 4字节
重要的逻辑运算
或(or |):只要一个为1就是1
与(and &):两个都为1才是1
异或(xor ^):不一样为1
非(not !):1是0,0是1
CPU如何计算2+3
- 先异或运算
- 0010 xor 0011 = 0001
- 进行与运算
- 0010 and 0011 = 0010
- 如果与运算结果不为0
- 左移一位 = 0100
- 左移结果与异或结果进行异或运算
- 0001 xor 0100 = 0101
- 继续进行与运算
- 0001 and 0100 = 0000
- 与运算结果为0,则最终结果为0101
32位通用寄存器
寄存器 | 主要用途 | 编号 | 存储数据范围 |
---|---|---|---|
EAX | 累加器 | 0 | 0X00000000-0xFFFFFFFF |
ECX | 计数 | 1 | 0X00000000-0xFFFFFFFF |
EDX | I/O指针 | 2 | 0X00000000-0xFFFFFFFF |
EBX | DS段的数据指针 | 3 | 0X00000000-0xFFFFFFFF |
ESP | 堆栈之战 | 4 | 0X00000000-0xFFFFFFFF |
EBP | SS段的数据指针 | 5 | 0X00000000-0xFFFFFFFF |
ESI | 字符串操作的源指针;SS段的数据指针 | 6 | 0X00000000-0xFFFFFFFF |
EDI | 字符串操作的目的指针;ES段的数据指针 | 7 | 0X00000000-0xFFFFFFFF |
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 787772394@qq.com
文章标题:逆向_02数据宽度,逻辑运算
本文作者:二豆子·pwnd0u
发布时间:2020-09-04, 16:06:27
最后更新:2023-05-18, 09:49:10
原始链接:http://blog.codefat.cn/2020/09/04/%E9%80%86%E5%90%91-02%E6%95%B0%E6%8D%AE%E5%AE%BD%E5%BA%A6%EF%BC%8C%E9%80%BB%E8%BE%91%E8%BF%90%E7%AE%97/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。