地址、字长与字节

一、位数与字长

处理器有一个位数的概念,像Intel的8086就是典型的16位处理器,以及32位和64位的x86结构处理器,这个位数就是指处理器一次可以处理的数据位数。也可称之为字长

并且无论在哪种架构的处理器是,字节长度都是8位是固定不变的

所以我们可以说8086的字长是16位,一个字是两个字节。

二、地址与字节与字长

地址可以看作是字节数组,即字节是地址的基本编码单位。像地址0x0000,0x0001分别就是地址中第一个、第二个字节的位置。但是我们前文提到了处理器一次处理的数据长度(字长),所以如果0x0000是初始地址,那么像0x0001这种后续几个低于字长地址就没啥价值了,因为我本次处理了0x0000,下一次就处理0x0008(64位处理器)了

三、联想

1、在64位x86的机器上,移动指令是movq,这个q是什么含义呢?

答:q是指quater是四分之一的意思,反过来就是四倍,远古8086的字长是两个字节16位,16位的四倍就是64位了,所以movq指64位的mov

2、为什么使用%p打印出来的地址,一般都是0x7fff xxxx xxxx,远远不是64位呀

答:64位的机器因为一些编码啥的问,地址位数只有47位。

全部评论

相关推荐

​你常用的数据结构有哪些​slice,map,struct​interface可以用来做什么​了解过Golang的内存分配的吗,怎么做管理的,比如当我分配一个切片或者分配一个 map 的时候​Golang GC是怎么做的,什么情况下会触发​Goroutine会用在哪些地方​多个协程时,主协程如何等待其他协程完成后再做其他操作​讲一下协程工作机制​有用到过channel吗​你用过defer吗,他的执行顺序是怎么样的,在return之前还是之后你用过哪些锁,有哪些区别​Golang如何实现原子操作,保证在一定操作时间内完成,不会被中断​map是安全的吗,并发访问map会发生什么除了加锁还有哪些方式,并发安全访问变量-------------------------------------------------------------------------------------------------------------------介绍你负责Golang后端开发的工作​开发中常用的lib有哪些​go-zero你用在了什么项目中,解决了什么问题​微服务拆分的依据是什么​你平时编程会用到哪一些设计模式​你平时项目里CICD会怎么做,自己的个人项目怎么去做一些持续开发或者一些集成或者打包?大概会是怎么样的​你用过docker,k8s相关的云原生平台吗​docker的工作原理有了解过吗​-------------------------------------------------------------------------------------------------------------------基础问题,观察能不能进去干活
点赞 评论 收藏
转发
点赞 1 评论
分享
牛客网
牛客企业服务