assembly - 给定PC=0x32011C,一个值位于0x32010C,那么偏移量是多少?
问题描述
我想知道地址偏移量是否可能是负数。例如,我的问题的答案是否为负 16 个字节?
解决方案
最好在特定指令中谈论偏移量,例如条件分支或调用指令。
在 RISC V 中,许多指令具有 12 位偏移量,并且这些指令都被扩展为 32 位或 64 位(分别用于 RV32 或 RV64)。(有些指令有 20 位的偏移量,其中一些的工作方式略有不同。)
执行 pc 相对寻址的指令的 PC 是基值,它被添加到偏移量——这意味着偏移量 0 表示当前正在执行的指令,+4 表示随后的 32 位指令,-4 表示前面的 32位指令(按地址在内存中,不一定按执行顺序)。
为了支持紧凑格式指令(16 位)和扩展指令大小(48 位和更大),执行 pc 相对寻址的指令的偏移量提供偶数字节偏移值 - 因为值总是偶数,低位始终为零,因此未在偏移量中编码。因此,在此类指令中编码的偏移量在被硬件使用之前会在低端(作为 LSB)填充一个零位。
推荐阅读
- java - 即使设置了 tempLocation 和 gcpTempLocation,数据流作业总是会创建新的默认存储桶?
- amazon-dynamodb - AWS GET api 查询 DynamoDB,在映射模板中使用二级索引
- c# - 自定义记录器类的性能分析,用于读取 Word 文档的应用程序
- azure - az aks install-connector 因“--name 未知参数”而失败
- windows - LNK1181 链接器错误,无法打开输入文件,在 Windows 10 上 -- 虚假,然后解决
- generics - 如何对包含不同类型的链表进行静态调度,这些类型都实现了一个特征?
- c# - Windows 窗体应用程序 C# - 更改数组
- google-app-engine - AppEngine Flex 自定义就绪和活跃度端点未触发
- jquery - 如何以动画的形式显示随机的 html 类标签?
- python - 在 Python 字典中查找元素