目标处理器类型 (-target
)
通过选择预定义目标处理器来指定数据类型的大小和端序
描述
指定部署代码的处理器。
目标处理器决定了基础数据类型的大小和目标计算机的端序。如果其他处理器类型共享公共数据属性,则您可以使用其中之一来分析用于未列出的处理器类型的代码。
设置选项
使用以下方法之一设置选项:
Polyspace® 用户界面(仅限桌面端产品)- 在您的工程配置中,选择目标和编译器节点,然后为此选项选择一个值。
要查看类型的大小,请点击目标处理器类型下拉列表右侧的编辑按钮。对于某些编译器,您只能看到该编译器允许的处理器。对于这些编译器,数据类型的大小在用户界面中不可见。有关数据类型的大小,请参阅设置。
Polyspace 平台用户界面(仅限桌面端产品)- 此选项在 Polyspace 平台用户界面中名为处理器,并显示不同的受支持目标列表。请参阅
处理器
。目标处理器类型选项所支持的目标(列于 设置 中)无法在 Polyspace 平台用户界面中直接选择。如果您在 Polyspace 平台用户界面中打开psprj
Polyspace 工程文件,工程中使用的目标会转换为自定义目标处理器,并在处理器选项中列出。
为何使用此选项
您可以指定一个目标处理器,以便某些 Polyspace 运行时检查根据该处理器的数据类型大小和其他属性进行量身定制。
例如,与 64 位处理器(如 x86_64)相比,变量在 32 位处理器(如 i386)上可能会因较小的值而溢出。如果您选择 x86_64 进行 Polyspace 分析,但将代码部署到 i386 处理器,则您的 Polyspace 结果并不总是适用。
选择目标处理器后,您可以指定 char 的默认符号是有符号还是无符号。要确定要指定的符号性,请使用您常用的编译器设置编译以下代码:
#include <limits.h> int array[(char)UCHAR_MAX]; /* If char is signed, the array size is -1
-fsigned-char
标志进行编译,而使用 -funsigned-char
标志则无法成功编译。设置
默认值:i386
此表显示了在与 generic
、GCC、Clang 和 Visual Studio® 编译器配合使用时,各种目标处理器下每种基本数据类型的假定大小。对于某些目标,您可以通过点击目标处理器类型下拉列表右侧的编辑按钮来修改默认大小。这些目标的可选值在表中使用方括号显示。
目标 | char | short | int | long | long long | float | double | long doublea | 指针 | char 默认符号 | endian | 对齐 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
i386 | 8 | 16 | 32 | 32 | 64 | 32 | 64 | 96 | 32 | 有符号 | Little | 32 |
sparc | 8 | 16 | 32 | 32 | 64 | 32 | 64 | 128 | 32 | 有符号 | Big | 64 |
m68kb | 8 | 16 | 32 | 32 | 64 | 32 | 64 | 96 | 32 | 有符号 | Big | 64 |
powerpc | 8 | 16 | 32 | 32 | 64 | 32 | 64 | 128 | 32 | 无符号 | Big | 64 |
c-167 | 8 | 16 | 16 | 32 | 32 | 32 | 64 | 64 | 16 | 有符号 | Little | 64 |
tms320c3x | 32 | 32 | 32 | 32 | 64 | 32 | 32 | 64 | 32 | 有符号 | Little | 32 |
sharc21x61 | 32 | 32 | 32 | 32 | 64 | 32 | 32 [64] | 32 [64] | 32 | 有符号 | Little | 32 |
necv850 | 8 | 16 | 32 | 32 | 32 | 32 | 32 | 64 | 32 | 有符号 | Little | 32 |
hc08c | 8 | 16 | 16 [32] | 32 | 32 | 32 | 32 [64] | 32 [64] | 16d | 无符号 | Big | 32 |
hc12 | 8 | 16 | 16 [32] | 32 | 32 | 32 | 32 [64] | 32 [64] | 326 | 有符号 | Big | 32 |
mpc5xx | 8 | 16 | 32 | 32 | 64 | 32 | 32 [64] | 32 [64] | 32 | 有符号 | Big | 32 |
c18 | 8 | 16 | 16 | 32 [24]e | 32 | 32 | 32 | 32 | 16 [24] | 有符号 | Little | 8 |
x86_64 | 8 | 16 | 32 | 64 [32]f | 64 | 32 | 64 | 128 | 64 | signed | Little | 128 |
arm | 8 | 16 | 32 | 32 | 64 | 32 | 64 | 64 | 32 | 有符号 | Big | 64 |
arm64 | 8 | 16 | 32 | 64 | 64 | 32 | 64 | 128 | 64 | 有符号 | Big | 128 |
riscv | 8 | 16 | 32 | 32 | 64 | 32 | 64 | 128 | 32 | 有符号 | Big | 128 |
riscv64 | 8 | 16 | 32 | 64 | 64 | 32 | 64 | 128 | 64 | 有符号 | Big | 128 |
mcpu...(高级)g | 8 [16] | 8 [16] | 16 [32] | 32 | 32 [64] | 32 | 32 [64] | 32 [64] | 16 [32] | 有符号 | Little | 32 |
a For targets where the size of
b The M68k family (68000, 68020, and so on) includes the “ColdFire” processor c Non-ANSI C specified keywords and compiler implementation-dependent pragmas and interrupt facilities are not taken into account by this support d All kinds of pointers (near or far pointer) have 2 bytes (hc08) or 4 bytes (hc12) of width physically. e The f Use option g mcpu is a reconfigurable Micro Controller/Processor Unit target. You can use this type to configure one or more generic targets. For more information, see |
除了原生支持的编译器之外,Polyspace 还支持各种专用编译器。您可以为这些专用编译器选择受支持的目标处理器:
ARM® v5 编译器的目标 - 请参阅
ARM v5 编译器 (-compiler armcc)
。ARM v6 编译器的目标 - 请参阅
ARM v6 编译器 (-compiler armclang)
。NXP CodeWarrior® 编译器的目标 - 请参阅
NXP CodeWarrior 编译器 (-compiler codewarrior)
。Cosmic 编译器的目标 - 请参阅
Cosmic 编译器 (-compiler cosmic)
。Diab 编译器的目标 - 请参阅
Diab 编译器 (-compiler diab)
。Green Hills® 编译器的目标 - 请参阅
Green Hills 编译器 (-compiler greenhills)
。IAR Embedded Workbench 编译器的目标 - 请参阅
IAR Embedded Workbench 编译器 (-compiler iar-ew)
。MPLAB XC8 C 编译器的目标 - 请参阅
MPLAB XC8 C 编译器 (-compiler microchip)
Renesas® 编译器的目标 - 请参阅
Renesas 编译器 (-compiler renesas)
。TASKING 编译器的目标 - 请参阅
TASKING 编译器 (-compiler tasking)
。Texas Instruments® 编译器的目标 - 请参阅
Texas Instruments 编译器 (-compiler ti)
。
提示
如果您的处理器未列出,请使用具有相同特性的类似处理器,或创建一个
mcpu
通用目标处理器。请参阅通用目标选项
。您还可以使用选项
-custom-target
显式说明基础类型的大小等来创建自定义目标。如果您的配置同时使用
-custom-target
和-target
来指定目标,则分析将使用您使用-custom-target
指定的目标。
命令行信息
参数:-target |
值:i386 | sparc | m68k | powerpc | c-167 | tms320c3x | sharc21x61 | necv850 | hc08 | hc12 | mpc5xx | c18 | x86_64 | mcpu |
默认值:i386 |
示例 (Bug Finder):polyspace-bug-finder -target m68k |
示例 (Code Prover):polyspace-code-prover -target m68k |
示例 (Bug Finder Server):polyspace-bug-finder-server -target m68k |
示例 (Code Prover Server):polyspace-code-prover-server -target m68k |
您可以使用特定的命令行选项覆盖某些目标的默认值。请参阅通用目标选项
中的命令行选项部分。
另请参阅
Polyspace 分析选项
Polyspace 结果
局部变量大小的较低估计值
(Polyspace Code Prover) |局部变量大小的较高估计值
(Polyspace Code Prover)