首页 > 解决方案 > MSP430 中的 sxt 指令究竟做了什么?

问题描述

我知道这sxt是符号扩展指令。但我不明白这到底是如何工作的。例如,如果我的r15寄存器存储 byte 0045,那该怎么sxt r15办?

标签: assemblyreverse-engineeringmsp430

解决方案


我一直在处理大量使用此指令的问题。要将其压缩为单个函数,我会将其(使用 Pythonic 语法)编写为:

def sxt(x):
    if x % 256 > 127:    # if top bit of low byte is set
        x |= 0xff00
    else:
        x &= 0x00ff

这可以写得更紧凑,也可能更有效。此版本旨在为非 asm-native 用户提供最直观的体验。

另请注意,该函数假定您将输入作为两个字节字传递,就像sxt指令操作一样,0xhhhh其中 h 是一个十六进制数字,您可以在 Python 中执行此操作。


推荐阅读