首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DWARF运算符到字节交换dwarf堆栈值

DWARF运算符到字节交换dwarf堆栈值
EN

Stack Overflow用户
提问于 2019-10-16 18:31:44
回答 1查看 56关注 0票数 0

我正在尝试更改存储在dwarf堆栈中的多字节数据(不大于泛型类型)的字节顺序。我已经检查了dwarfv5 DW_OP_xxx运算符,但找不到任何可以交换字节的运算符。虽然我可以使用移位/掩码/按位等操作列表来完成,但每次我想要进行更改时,这会创建大约25个DW_OPs。

我知道dwarf_subroutines,有没有人知道我们是否有一个(或两个) dwarf操作符来交换dwarf堆栈值顶部的字节。(或DWARFv5的任何增强问题)或任何非标准扩展。

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-01-11 01:31:09

DWARF堆栈机器具有按位操作-移位、AND、OR。

用常规符号表示的两字节值的字节交换是:

代码语言:javascript
复制
(a >> 8) | (a << 8)

如果翻译成堆栈机器语言,假设a在开始时位于堆栈顶部,则可能会这样:

代码语言:javascript
复制
              #a
dup           #a a
const1u 8     #8 a a
swap          #a 8 a
shr           #a>>8 a
swap          #a a>>8
const1u 8     #8 a a>>8
swap          #a 8 a>>8
shl           #a<<8 a>>8
or            #Bingo!

对于一个4字节的常量,它会更加复杂。您必须使用AND分隔字节,将它们移到正确的位置,最后将它们放在一起进行OR运算。

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

https://stackoverflow.com/questions/58411224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档