首页 > 系统相关 >滴水逆向笔记系列-1.进制-2.数据宽度_逻辑运算-3.通用寄存器_内存读写

滴水逆向笔记系列-1.进制-2.数据宽度_逻辑运算-3.通用寄存器_内存读写

时间:2024-03-14 10:36:32浏览次数:34  
标签:逻辑运算 字节 32 读写 通用寄存器 内存 寄存器 4G 进制

第一课 进制

这节课讲进制计算的核心就是查表
image.png
例:3+5,就是从上表的3开始往后数五个数,10
image.png
例:46则是看作6+6+6+6,6+6由上表可知为14,14再往后数12个数得出为46=30
image.png
八进制复杂计算(文字比较难说明,但是大致还是和我们十进制的计算方式一样,只是九九乘法表换成上面三张表
image.png

作业

image.png
1.成立。可以以5进制计算
(老师答案是元素可以自定义,如:0 2 3 1 8 7 6 9 5 4)
2+3等于在2这个符号往后数2个数字,因为按0123456789算,3这个位置在2,所以往后数2个数字
2.C B 5 4 E B 5 7 B 4 A B
-577536813.png
image.png
<1>image.png

进制2

image.png
还是想告诉我们进制要用查表的思想去思考也就是计算机的思考方式去思考,但是到这里我还没悟透老师怎么做的含义,觉得很麻烦
image.png(这里下面的+1理解成往后数一个数
直到看到这张表,顺序被打乱了,才知道为什么需要查表,如果还按照计算的方式去思考,这里会乱
如果只用查表的方式,把数字当作符号,而不是数字,就能完成后面的题目

作业

4进制定义:由4个符号组成,分别是:3、8、2、4,逢4进1
答、
image.png
image.png
1、
image.png
2、
image.png

第二课 数据宽度_逻辑运算

1.数据

按照圆圈理解
有符号数与无符号数是人类自由定义的,计算机只认得0和1
而且这里可以按照平时讲的补码验证一下,0-7是正数,8-F是负数,8到F的十六进制都是1开头(1000,1001,1010....1111)对应着平时说的1开头即是负数
image.png
image.png
image.png
image.png

2.计量单位

BYTE 字节 = 8(BIT) 一字节
WORD 字 = 16(BIT) 两字节
DWORD 双字 = 32(BIT) 四字节

1KB = 1024BYTE
1MB = 1024KB
1GB = 1024MB

3.逻辑运算

1.或(or |)运算

只要有一个1就是1
image.png

2.与(and &&)运算

两个都为1才是1
image.png

3.异或(xor ^)运算

不一样就是1(图片运算处缩进有问题)
image.png

4.非(not !)

1是0,0是1
image.png

5.左移( << )

image.png

逻辑运算具体运用:

1.cpu加法运算原理
想异或运算再and运算,左移1后结果不全为0,则继续用异或出来的数与左移出来的结果去异或和and运算,循环至左移1后结果全为0

image.png

2.如果想获取某个值的第N位的值是多少?
image.png
想知道第四位的值是0或1,就在and第四位下为1,其他位为0,之后看结果,若第四位结果为1,则第四位就为1,反之为0。

4.寄存器

image.png

作业

image.png
1、在32位中十进制的-3十六进制表示为FFFFFFFD,八进制则表示为题目结果,可参考上面的圆形图
3、

第三课 通用寄存器_内存读写

寄存器

image.png
32位寄存器和16位和8位都存在包含关系
image.png

mov等常用指令语法

mov:(不可mov edx,[ebx-0x4])注意语法
image.png
image.png
image.pngimage.pngimage.pngimage.png

寄存器与内存

1.寄存器和内存没有本质区别,都是用于存储数据的容器
2.寄存器位于CPU内部,执行速度快但是比较贵
3.内存速度相对较慢,但成本较低,所以可以做的很大
4.内存的数量特别庞大,无法每个内存单元都起一个名,,所以用编号来代替◇我们称计算机 CPU 是32位或者64位◇
有很多书上说之所以叫32位计算机是因为寄存器的宽度是32位,是不准确的,因为还有很多寄存器是大于32位的。
计算机内存的每一个字节会有一个编号(即内存编号的单位是字节),如下图
image.png
我的个人理解是一块内存就是1字节,32位(32个0和1)用十六进制表示则为8bit,然后我们可以给他排编号,最大编号为FFFFFFFF的内存,注意这是十六进制的FFFFFFFF,它是从0开始的,所以一共可以有FFFFFFFF+1=100000000块内存,转化为十进制,可以算出有4,294,967,296这么多块内存,因为一块内存1字节,4,294,967,296字节除以1024=4,194,304kb=4,096mb=4G
最后是4G,说明32位的计算机能识别的最大内存就是4G,因为他只能有这么多块内存,内存寻址最大范围只有4G,甚至实际使用的内存小于4G,因为有些硬件固定占着那些内存了

  • 32位能识别的内存最多是4G(×)不一定,可以通过打补丁等形式拓展

内存

image.png

标签:逻辑运算,字节,32,读写,通用寄存器,内存,寄存器,4G,进制
From: https://www.cnblogs.com/xiaoxin07/p/18071967

相关文章

  • PYTHON openpyxl 读写表格,输出幼儿园课程表,值班表
    #frompickleimportAPPENDimportopenpyxlimportdatetimefromtimeimportstrftime#importre#fromdatetimeimportdatetime#fromdateutil.parserimportparse#importpandasaspdimportoperatorwb=openpyxl.load_workbook(r'1_7date.xlsx')......
  • dd测试服务器读写速度
     网上dd命令的文章有很多,这里只是自己做下简单的记录。dd命令介绍作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。可以用于测试磁盘命令、数据备份或恢复等。dd命令用于复制文件并对原文件的内容进行转换和格式化处理。用的比较多的还是用dd来备份裸设备。......
  • 使用C#读写xml文件
    由于xml文件的易读特性,使得它非常适合作为程序配置文件。和ini文件相比,xml文件可以实现列表等复杂参数配置,灵活性比较大。使用C#读取xml文件,首先要加载xml文件获取XmlDocument对象,然后通过该对象获取XmlNode类型的根节点,之后再对根节点获取相应子节点的属性或值。写入xml文件时,获......
  • 读写分离 & 分库分表 & 深度分页
    什么是读写分离?见名思意,根据读写分离的名字,我们就可以知道:读写分离主要是为了将对数据库的读写操作分散到不同的数据库节点上。 这样的话,就能够小幅提升写性能,大幅提升读性能。一般情况下,我们都会选择一主多从,也就是一台主数据库负责写,其他的从数据库负责读。主库和从库之间会......
  • 使用C#读写ini文件
    使用C#读写ini文件要用到Windows的API函数:GetPrivateProfileString、WritePrivateProfileString,下面对该方法进行封装并以具体ini文件为例说明如何读写。1、ini文件示例;FTP服务器参数[FtpServer]IP=127.0.0.1Port=21UserName=userPassword=user2、IniHelper.cspubli......
  • 痞子衡嵌入式:不清i.MXRTxxx里FLEXSPI_MCR0寄存器保留位会造成IP CMD读写异常
    大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是不清i.MXRTxxx里FLEXSPI_MCR0寄存器保留位会造成IPCMD读写异常。痞子衡曾经写过一篇文章《改动i.MXRT1xxx里IOMUXC_GPR寄存器保留位可能会造成系统异常》,这篇文章提出了一个观点,即对于MCU外设寄存器应......
  • 如何避免MYSQL主从延迟带来的读写问题?
    在MYSQL部署架构选型上,许多公司都会用到主从读写分离的架构,如下是一个一主一从的架构,主库master负责写入,从库slave进行读取。但是既然是读写分离,必然会面临这样一个问题,当在主库上进行更新后,有可能数据还没来得及同步到从库,但是这个时候又有读数据的需求,为了能正确读取出数据,这......
  • Linux如何设置文件和文件夹的读写权限
    如下ls-l<文件名>-rw-rw-r--一共有10位数,其中:最前面那个-代表的是类型(-文件d文件夹)中间那三个rw-代表的是所有者(user)然后那三个rw-代表的是组群(group)最后那三个r--代表的是其他人(other)这里再解释一下后面那9位数:r 表示文件可以被读(read)w 表示文件......
  • Redis(主从复制、读写分离、主从切换)架构
    Redis的集群方案大致有三种:1)rediscluster集群方案;2)master/slave主从方案;3)哨兵模式来进行主从替换以及故障恢复。一、sentinel哨兵模式介绍Sentinel(哨兵)是用于监控redis集群中Master状态的工具,是Redis的高可用性解决方案,sentinel哨兵模式已经被集成在redis2.4之后的版本......
  • 【代码更新】IIC时序——读写EEPROM
    【代码更新】IIC时序——读写EEPROM    整体代码:1//---->50MHz--->20ns100KHz---->10000ns2`timescale1ns/1ps3moduleeeprom_i2c#(parameterSCL_CYC=1000)//100KHz4(5inputclk,6inputrst_n,78......