地址

[Swift]LeetCode10000.此为爬取文章,请点击下文中原文链接1

試著忘記壹切 提交于 2019-12-04 04:34:39
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:为敢(WeiGanTechnologies) ➤个人域名: https://www.zengqiang.org ➤GitHub地址: https://github.com/strengthen/LeetCode ➤原文地址: ➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。 ➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创! ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ 来源: https://www.cnblogs.com/strengthen/p/11831445.html

[Swift]LeetCode10000.此为爬取文章,请点击下文中原文链接4

假如想象 提交于 2019-12-04 04:34:33
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:为敢(WeiGanTechnologies) ➤个人域名: https://www.zengqiang.org ➤GitHub地址: https://github.com/strengthen/LeetCode ➤原文地址: ➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。 ➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创! ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ 来源: https://www.cnblogs.com/strengthen/p/11831456.html

[Swift]LeetCode10000.此为爬取文章,请点击下文中原文链接3

て烟熏妆下的殇ゞ 提交于 2019-12-04 04:34:33
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:为敢(WeiGanTechnologies) ➤个人域名: https://www.zengqiang.org ➤GitHub地址: https://github.com/strengthen/LeetCode ➤原文地址: ➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。 ➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创! ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ 来源: https://www.cnblogs.com/strengthen/p/11831454.html

[Swift]LeetCode10000.此为爬取文章,请点击下文中原文链接2

人盡茶涼 提交于 2019-12-04 04:34:29
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:为敢(WeiGanTechnologies) ➤个人域名: https://www.zengqiang.org ➤GitHub地址: https://github.com/strengthen/LeetCode ➤原文地址: ➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。 ➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创! ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ 来源: https://www.cnblogs.com/strengthen/p/11831452.html

[Swift]LeetCode10000.此为爬取文章,请点击下文中原文链接5

馋奶兔 提交于 2019-12-04 04:34:25
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:为敢(WeiGanTechnologies) ➤个人域名: https://www.zengqiang.org ➤GitHub地址: https://github.com/strengthen/LeetCode ➤原文地址: ➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。 ➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创! ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ 来源: https://www.cnblogs.com/strengthen/p/11831459.html

Go--指针

此生再无相见时 提交于 2019-12-04 04:32:29
Go语言中的指针 任何程序数据都需要载入内存中,那么在内存中都会有一个内存地址,这其实就是指针。为了保存一个数据在内存中的地址,我们就需要用到指针变量 Go语言中的指针不能进行偏移和运算,因此Go语言中的指针操作其实也非常简单,&(取地址)和*(根据内存地址取值) 指针地址和指针类型 每个变量在运行的时候都拥有一个地址,这个地址代表变量在内存中的地址。Go语言中利用&字符放在变量的前面对变量进行操作        ptr := &v // v的类型为T    v:代表被取地址的变量,类型为T ptr:用于接收内存地址的变量,ptr的类型为*T,叫做T的指针类型。*代表指针 指针取值 对于普通变量使用&操作符取内存地址以后就会获得这个变量的指针,然后可以对指针使用*操作,也就是利用指针取值 func main() { //指针取值 a := 10 b := &a // 取变量a的地址,将指针保存到b中 fmt.Printf("type of b:%T\n", b) c := *b // 指针取值(根据指针去内存取值) fmt.Printf("type of c:%T\n", c) fmt.Printf("value of c:%v\n", c) }    type of b:*int type of c:int value of c:10    总结:取地址操作符&和取值操作符

操作系统实现(二):分页和物理内存管理(转载)

北城以北 提交于 2019-12-04 03:44:39
原文链接: http://www.cppblog.com/airtrack/archive/2015/04/27/210451.html 上一篇 从 Bootloader 开始到内核载入使用的都是平坦内存,即所有地址对应实际的物理地址。现代操作系统都使用分页来管理内存,分页可以让每个进程都有完整的虚拟地址空间,进程间的虚拟地址空间相互隔离以提供页层级的保护。另外分页可以让物理内存少于虚拟地址空间,同时可以使用磁盘存储暂时未使用的内存页,提供更多的「内存」。 分页 分页通过 CPU 的 MMU(Memory Management Unit) 完成,MMU 通过当前的分页表完成虚拟地址到物理地址的转换。在 x86 下 MMU 通过两级分页表(也可以开启三级)完成地址转换,这两级分别是页目录(Page Directory)和页表(Page Table)。在 x86 下,由 cr3 寄存器存储页目录的地址(物理地址),页目录和页表都包含 1024 项,每项 4 字节,因此页目录和页表大小为 4KB ,按照 4KB 一页的话,刚好占用一页。 MMU 将虚拟地址转换成物理地址的方式是,取虚拟地址的 22~31bits 表示页目录的下标,获得页目录项定位到页表,再取 12~21bits 表示页表的下标,获得页表项定位到页,最后取 0~11bits 表示页偏移。页目录项和页表项的下标分别用

[debug] 关闭vs的增量链接

心不动则不痛 提交于 2019-12-04 03:33:24
1. 什么是增量链接?   答:采用Debug模式下,函数地址并不是该函数的开始部分,而是跳转到一个 jmp 函数地址。     比如,一个函数 test(),其地址 test 对应的汇编语句是 "jmp test真正的地址" 2. 为什么要关闭增量链接?   答:我们常常需要hook某个函数,此时如果存在增量链接,我们不得不处理很多繁琐的步骤。     如果采用Release版本,将可能丢失一些调试信息。因此我们需要采用增量链接。 3. 如何关闭增量链接?   答:项目->属性->链接器->通用->启用增量链接(NO)。    来源: https://www.cnblogs.com/onetrainee/p/11828987.html

3.3-常用汇编指令

偶尔善良 提交于 2019-12-04 02:39:53
如何阅读反汇编文件? 以下是一个例子 4bc: e3a0244e   mov r2, #1308622848 4c0: e3a0344e   mov r3, #1308622848 4c4: e5933000   ldr r3, [r3] 像4bc这些是代码运行的地址, e3a0244e是机器码 那常用的汇编指令有哪些? b, bl 这两条指令为跳转指令,不同之处在于bl指令除了跳转之外,还将返回地址保存在lr寄存器中。 mov 这个指令可以把一个寄存器的值赋给另一个寄存器,或者把一个常熟赋给寄存器。常数必须能用立即数来表示 当不能用立即数来表示时可以使用ldr命令来赋值。ldr是伪指令,它不是真实存在的指令,编译器会把它扩展成真正的命令。 ldr r1, =label 当它的第二个参数前有=号时,表示伪指令,否则表示内存访问指令 ldr r1, [r2, #4] 将地址r2+4的内存单元数据读取到r1中 ldr r1, [r2] 将地址为r2的内存单元的数据读取到r1中 ldr r1, [r2], #4 将地址为r2的内存单元数据读取到r1中,然后r2 = r2+4 str r1, [r2, #4] 将r1的数据保存到地址为r2+4的内存单元中 str r1, [r2] 将r1的数据保存到地址为r2的内存单元中 str r1, [r2], #4

SDRAM/DDR是怎么寻址的?

99封情书 提交于 2019-12-04 01:54:20
SDRAM/DDR是怎么寻址的? 为了读取特定单元格的数据,在寻址时要首先确定是哪一个bank,然后在这个选定的bank中进行行列的寻址。在实际工作中,bank的地址与相应的行地址是同时发出的,此时这个命令称之为"行有效"或者“行激活”。在此之后,发送列地址寻址命令和具体的操作命令(读或写),这两个命令也是同时发送的。行列地址是可以复用的,一般来说DDR芯片的地址线为A0~A15,低地址线会被行列复用。以K4B4G1646B 4Gbit 256MB x 16bit内存芯片为例,A0~A14用做行地址,A0~A9用做列地址,这款芯片同时含有B0~B2用来选择bank。 在实际工作中,Bank地址与相应的行地址是同时发出的,此时这个命令称之为“行激活”(Row Active)。在此之后,将发送列地址寻址命令与具体的操作命令(是读还是写),这两个命令也是同时发出的,所以一般都会以“读/写命令”来表示列寻址。根据相关的标准,从行有效到读/写命令发出之间的间隔被定义为tRCD,即RAS to CAS Delay(RAS至CAS延迟,RAS就是行地址选通脉冲,CAS就是列地址选通脉冲),我们可以理解为行选通周期。tRCD是DDR的一个重要时序参数,广义的tRCD以时钟周期(tCK,Clock Time)数为单位,比如tRCD=3,就代表延迟周期为两个时钟周期,具体到确切的时间