如何知道某个数字在 ARM 中可以表示为 32 位立即数? [英] How to know that a certain number can be represented as 32 bit immediate in ARM?

查看:22
本文介绍了如何知道某个数字在 ARM 中可以表示为 32 位立即数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

给定一个数 x,我们怎么知道它可以表示为 32 位立即数.是否存在任何类型的公式?如果是,该公式是否详尽无遗,即涵盖所有可能的情况?ARM 将指令集中最右边的 12 位分解为 4 位循环位和 8 位值位.

Given a number x, how can we tell that it can be represented as 32-bit immediate. Does any kind of formula exists? If yes, is that formula exhaustive, i.e., covers all the possible cases? ARM decomposes the rightmost 12 bits in the instruction set as 4 bit rotate-bit and 8 bit value bit.

推荐答案

我会研究开源编译器以及它们是如何做到的...

I would look into open source compilers and how they do it...

https://github.com/gcc-mirror/gcc/blob/cbca62831cb7c1c7c20d67fcf929f156b09923bf/gcc/config/arm/arm.c#L4387

/* Return TRUE if int I is a valid immediate ARM constant.  */
int
const_ok_for_arm (HOST_WIDE_INT i)
{
...

这篇关于如何知道某个数字在 ARM 中可以表示为 32 位立即数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆