assembly - MIPS:在基偏移寻址中使用标签
问题描述
我正在尝试使用标签作为基本偏移寻址模式中的偏移量,以便在类似 shellcode 的环境中访问全局变量。代码和数据的基地址存储在 中$s7
,我正在尝试这样做:
# global variable @ offset 20 in code,
foobar: .word <non-constant value>
# ...
lw $s0, foobar($s7)
然后让汇编器把它翻译成lw $t0, 20($s7)
. 相反,在没有特殊选项的情况下进行编译时,它会通过$gp
. 同样,当使用-mno-abicalls
or时-mno-shared
, thelw
被翻译为:
lui $s0, 0x0
addu $s0, $s0, $s7
lw $s0, 20($s0)
有没有办法让它解释foobar
为立即值,就像 do 时一样,按预期addiu $t0, $t1, foobar
翻译?addiu $t0, $t1, 20
到目前为止,挖掘文档并没有产生任何有用的东西。
提前致谢!
解决方案
我找到了解决方案。现在我将使用lw $s0, %lo(foobar)($s7)
哪个有效,只要标签是<= 0xffff
- 再加上你不能在一条指令中使用更大的偏移量来做到这一点。
推荐阅读
- python - 如何过滤以我识别的三个字符串之一开头的列的值?
- excel - Excel 使用 vlookup/index+match 查找下一个值
- c - 从同一个 DSO 内部`dlopen`ing DSO
- node.js - Tensorflow NodeJS - 序列化/反序列化模型而不将其写入 URI
- azure - 如何在 Azure 中启用/禁用资源组中的功能应用
- java - 将list1添加到list2并更新list1而不影响list2
- web-crawler - 如何抓取特定语言的网络
- apache - 让 Apache 将客户端证书作为标头传递给应用服务器,而无需在浏览器中请求?
- azure-devops - 将对 Azure SQL Server 的访问限制为特定的 Azure Web 应用
- javascript - 如何使用 JavaScript 在 HTML DOM 对象数组中通过数据选择器查找元素?