首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >"lui a4,%hi(0x0001ff00)“的意外行为

"lui a4,%hi(0x0001ff00)“的意外行为
EN

Stack Overflow用户
提问于 2018-11-19 08:53:23
回答 2查看 254关注 0票数 0

我对%hi()汇编程序函数有问题。这个问题是RISC-V GNU汇编程序特有的.编写此程序:

代码语言:javascript
运行
AI代码解释
复制
lui     a4,%hi(0x0001ff00)     # Does not give what I expect
lui     a4,0x1f                #
.word   0x0001f737             #

使用

代码语言:javascript
运行
AI代码解释
复制
riscv32-unknown-elf-as  -o strange_lui.o strange_lui.s
riscv32-unknown-elf-objdump -D strange_lui.o 

代码语言:javascript
运行
AI代码解释
复制
strange_lui.o:     file format elf32-littleriscv
Disassembly of section .text:
00000000 <.text>:
0:  00020737            lui a4,0x20
4:  0001f737            lui a4,0x1f
8:  0001f737            lui a4,0x1f

我相信这三行应该编译成相同的代码。我在这里错过了什么?我在用:

代码语言:javascript
运行
AI代码解释
复制
riscv32-unknown-elf-as  -v
GNU assembler version 2.31.1 (riscv32-unknown-elf) using BFD version (GNU Binutils) 2.31.1
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-19 19:26:16

%hi(...)函数比它看上去更聪明。它不仅返回给定参数的前20位。

%hi希望在一个lui指令中使用,该指令很快就会被另一个指令所遵循,比如add %lo(...),它将通过提供低12位来完成寄存器的32位负载。

在执行add指令期间,将对这些低12位进行符号扩展,以生成32位值,然后将其添加到寄存器的原始内容中。当低位12的顶部位为0时,此符号扩展步骤对现有寄存器的前20位没有影响。然而,当低位12的顶部位是“1”时,符号扩展的效果是从寄存器的上20位的现有值中减去一个。

在这种情况下,%hi(0x0001ff00)函数看到下面12的最左边是'1‘。因此,它预测将由以下add %lo(0x0001ff00)执行的减法,并将0x00020写入寄存器的前20位。该0x00020将通过预期的符号扩展add转换为所需的0001f

如果您希望您的程序为所有三条语句生成相同的指令,请为%hi提供一个参数,其低12位在其最左边的位置为0。像lui %hi(0x0001f700)这样的人就能做到这一点。

票数 1
EN

Stack Overflow用户

发布于 2018-12-04 20:56:32

总之,如果与"%lo()“返回的有符号值一起使用,"%hi()”宏将假定有符号int值。

我甚至不认为"lui“指令是假设的,这可能是其他任何直接价值的指令。这是您在示例中使用的内容,但是还有许多其他RV指令使用即时参数

因此,应该有另一种形式,如"%hu()",与"%lu()“一起使用,以避免使用低部分的这个符号扩展,甚至不假定将使用"%lu()”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53379306

复制
相关文章
hi3516DV300_hi3531
海思3516DV300是华为海思半导体推出的一款专用 Smart HD IP 摄像机 SOC,集成新一代 ISP、业界 最新的 H.265 视频压缩编码器,同时集成高性能 NNIE 引擎,使得 Hi3516DV300 在低 码率、高画质、智能处理和分析、低功耗等方面引领行业水平。集成 POR、RTC、 Audio Codec 以及待机唤醒电路,为客户极大的降低了 ebom 成本。且与海思 DVR/NVR 芯片相似的接口设计,能方便支撑客户产品开发和量产。
全栈程序员站长
2022/11/09
6350
hi3516DV300_hi3531
HI~CTFER
简介 希望支持,第一次搭建CTF训练场,题目暂时以WEB,MISC,CRYPTO为主,因为PWN,Reverse...我不会出🤣 快来投题目呀,兄弟们,出题目是校验自己是否真的get到了所学的知识点,但是前提是原创 题目别套娃,比如一道密码题目,base64->base32->base16->维吉尼亚->培根->栅栏->....这种方式去套 适合人群 入门的小白 超强的大佬ak 训练场链接 点我直达
vFREE
2021/12/20
4290
HI~CTFER
Hi!2020
转眼间2019年就过去了,感谢过去的一年里陪伴着我的小伙伴们。 Ⅰ. 过去一年的 戴兜的小屋 (数据来自Google Analytics,由于蜜汁原因缺失5月初-8月中旬的数据) 2019年戴兜的小屋有效访问量:16,050 次,相比去年增长 94.15% 被浏览次数最多的文章:PoiLive2d(被浏览 5,945 次,占比 37.04%) 2019年十月共有 761 次有效访问,其中有 27 人在十一月回访,占比 4.11% 戴兜的小屋友人帐新增了 11 位小伙伴,现在戴兜有 51 位小伙伴啦🎉 戴兜
戴兜
2023/02/23
2300
Hi!2021
2020年转瞬即逝,上一次写年末总结,仿佛还在昨天…恐怕这一年对于我们来说都是印象深刻的一年,新冠疫情的爆发,让我们改变了太多。对于我来说,2020年同样意义非凡——2020年9月,我成年了。2021年1月,参加了人生中第一次“小高考”,在调和考试的焦虑的过程中,也让我收获了许多。这一年,戴兜又认识了许多新伙伴,感谢大家对戴兜的小屋的支持,同时也感谢在这一年帮助我解决了诸多困难的各位大佬们。由于学业压力,在过去的2020全年仅更新了3篇文章,深感抱歉。 Ⅰ. 过去一年的 戴兜的小屋 (数据来自Google
戴兜
2023/02/23
2890
Hi, SRS 5.0!
随着志宏大神合并完DASH的功能,SRS 5.0正式完成功能,进入一年左右的稳定性提升阶段,预计在2023年底正式发布,现在已经可以开始体验SRS 5.0的Alpha版本了。 SRS 5.0 Alpha 0 Features 下面是5.0新增的功能列表: •  优化SRT,支持协程原生架构。#3010[1] •  支持amd/armv7/aarch64多CPU架构的Docker镜像。#3058[2] •  Forward增强,支持动态Forward,可以灵活定制转发策略。#2799[3] •  GB281
Winlin
2022/11/28
1.8K0
Hi, SRS 5.0!
Hi,Java 21 !
在 2023 年 9 月 19 日举行的盛大发布活动庆祝了 Java 21 的正式发布,这也是 Java 17 之后的最新长期支持(LTS)版本。Oracle 承诺提供至少五年的免费升级支持,直到 2028 年 9 月,并将付费支持延长至 2031 年 9 月,为用户提供更长久的支持。
Luga Lee
2023/09/22
1.6K1
Hi,Java 21 !
hi3516dv300 sdk_Hi3516DV300
问题: bash: /opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/bin/arm-hisiv300-linux-gcc: 没有那个文件或目录。
全栈程序员站长
2022/11/09
6581
hi3516dv300 sdk_Hi3516DV300
Hi-C Data Browser:Hi-C数据浏览器
Lieberman-Aiden等人利用Hi-C技术研究了人淋巴母细胞的三维结构,首次提出了A/B compartment的概念,文章发表在science上,标题如下
生信修炼手册
2019/12/19
8770
Hi,我是KeeWiDB
如果现在的我们离开了互联网,生活会是什么样子? 互联网++++,已经深刻渗透到人们的生活中。 不知道大家有没有想过?每一个互联网+结合的背后都是海量的存储需求。你查看的每一个商品、组建的每一个战队、阅读的每一篇文章,基于互联网的每一个兴趣爱好,都有它的key和value。 在 key-value 数据库领域,Redis 因其高吞吐、低延迟、丰富的数据结构一直受开发者欢迎,但 Redis 全内存方案无法解决海量数据所带来的规模与成本问题,数据可靠性也面临挑战。 目前业界也有很多基于磁盘的键值存储方案,比如Ro
腾讯云数据库 TencentDB
2022/09/22
3940
Hi,我是KeeWiDB
hi3516dv300芯片手册_hi3518ev300
当前版本作者联系方式(长期有效):E-mail: WindForest@yeah.net
全栈程序员站长
2022/11/09
4K0
hi3516dv300芯片手册_hi3518ev300
意外的键盘输入
ok,经过一番精心的查看,原因是用户在使用鼠标书写收到了来自键盘的输入,而刚刚好我在业务上又监听了PreviewTextInput事件,在进行键盘输入时清理书写笔迹。于是问题就找到啦~~
黄腾霄
2020/06/10
1.2K0
MIPS架构深入理解7-汇编语言理解
本文主要的目标读者是习惯于C语言编程,但是,有时候不得不读懂一些汇编代码甚至做一些小范围的改动的开发者,比如操作系统移植时启动代码start.S文件的阅读与修改。如果想要深入研究汇编程序如何编写,请参考所使用的MIPS工具链的说明文档。
Tupelo
2022/08/15
3.4K0
MIPS架构深入理解7-汇编语言理解
编译Hi3516DV300的SDK
如果您之前编译过EV200的SDK,那么您会发现,编译DV300的过程很类似,软件包直接拷贝,无需重新下载,通常在1-2个小时内能搞定SDK的编译。 DV300的入门会简洁介绍,如果遇到编译错误,请你阅读EV200的编译过程和相应目录下的readme查询解决方法。
全栈程序员站长
2022/11/09
2K0
我在A4纸上看宫崎骏动画
来自港中文-商汤联合实验室、浙江大学、英伟达的研究人员,用AI将图片视频投影到实时弯曲的纸面上,还更改图片的视角、光照条件。
量子位
2021/04/23
4590
我在A4纸上看宫崎骏动画
2022-09-06:以下go语言代码输出什么?A:Hi All;B:Hi go All;C:Hi;D:go All。packa
2022-09-06:以下go语言代码输出什么?A:Hi All;B:Hi go All;C:Hi;D:go All。
福大大架构师每日一题
2022/11/06
1960
2022-09-06:以下go语言代码输出什么?A:Hi All;B:Hi go All;C:Hi;D:go All。packa
海思Hi3798硬件设计,Hi3798 datasheet(2)参考资料
本文主要介绍 Hi3798C V200 芯片的硬件封装、管脚描述、管脚复用寄存器的配置方法、电气特性参数、原理图设计建议、PCB 设计建议、热设计建议等内容。本文主要为硬件工程师提供硬件设计的参考。
全栈程序员站长
2022/07/05
1.8K0
海思Hi3798硬件设计,Hi3798 datasheet(2)参考资料
python之意外发现turtle的强大
闲来无事,上网闲逛,无意中发现了turtle这个库,于是各种百度去了解,才知道这库niu bi啊,居然可以画画!!!!
全栈程序员站长
2022/09/12
1.1K0
python之意外发现turtle的强大
Hi,这里是我的爬虫笔记
平时有个习惯,会把自己的笔记写在有道云里面,现在做个整理。会长期更新,因为我是BUG制造机。 解析 xpath提取所有节点文本 <div id="test3">我左青龙,<span id="tiger">右白虎,<ul>上朱雀,<li>下玄武。</li></ul>老牛在当中,</span>龙头在胸口。<div> 使用xpath的string(.) #!/usr/bin/env python # -*- coding: utf-8 -*- from scrapy.selector import Selec
小歪
2018/04/04
9780
Hi,这里是我的爬虫笔记
如何在A4纸上打印标签
我们在制作条码标签的时候,一般都是使用标签打印机打印在专门的标签纸上。但是也有一种情况就是设计完标签后在A4纸上打印,这样一张纸上就可以打印多张标签。具体如何操作小编将详细介绍。
神奇像素科技
2021/11/12
3.1K0
如何在A4纸上打印标签
hi3516a与hi3516e_led player6.0怎么使用
公司新做了一块3516Dv300的开发板,其中有MIPI Tx接口,刚好公司库房还有好几百块的LCD屏,LCD屏是800×480的,还是原装屏,不用掉怪可惜的了,所以就让硬件的同事化了个转接板,使用的芯片是ICN6211,这货最大分辨率可以支持到1920×1200,感兴趣的小伙伴自己下个手册看看。
全栈程序员站长
2022/09/29
6140
hi3516a与hi3516e_led player6.0怎么使用

相似问题

C++简单Hi-Lo游戏意外行为

20

SPIM (MIPS模拟器)无法分析以下语句lui $2,%hi($LC0)

43

JavaScript:‘`new (’hi‘)’与‘RegExp(’hi‘)’?

13

意外的cin行为

31

意外的getline行为

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档