标题:
将Linux C/C++应用程序从x86平台移植到IBM PowerLinux(4)
[打印本页]
作者:
yuyang911220
时间:
2015-7-30 19:08
标题:
将Linux C/C++应用程序从x86平台移植到IBM PowerLinux(4)
void foo() { short int val = 0xFF00; char *char_pointer = (char *) &val; //This prints 0 in x86 (or x86_64) machines and ff in ppc (or ppc64) machines. printf("%x\n", *char_pointer);} Migration Advisor 使用 Eclipse CDT Code Analyzer (Codan) 源代码分析器来查找 C/C++ 源代码中的潜在迁移问题,比如可能在 x86 和 POWER 服务器上运行时生成不同结果的代码块。要查找源代码中的问题,Codan 会分析 C/C++ 源代码抽象语法树 (AST),查找可能与 Power Architecture 不兼容的代码段。在找到潜在问题时,Migration Advisor 会保存该问题在代码中的位置,并在源代码中的这个特定位置添加一条警告。目前,Migration Advisor 仅兼容 C/C++ 代码。
以下是在 IBM SDK for PowerLinux 中使用 Migration Advisor 的屏幕截图。
图 2. 运行 Migration Advisor ‘Union with Endianness Issues’ 检查器
Migration Advisor:快速修复特性
Migration Advisor 还为一些迁移问题提供了快速修复方法,能够将依赖于架构的代码块替换为与 POWER 处理器兼容的指令。可以通过两种方式触发快速修复:右键单击源代码中的警告并选择快速修复选项;或者打开 Migration Advisor Eclipse View,右键单击一个特定问题,然后选择快速修复选项。
Migration Advisor 所提供的快速修复仅适用于:
特定于 x86、内置的编译器的使用
内联程序集的使用
性能降级
您可以选择可激活或可停用的检查器。每次您修改源代码后,Migration Advisor 都将重新检查代码并更新结果,使您在对项目执行完成的重新构建之前有机会快速识别和解决问题。图 3 显示了 Migration Advisor 窗口,其中已激活所有检查器。
图 3. 激活所有检查器
激活 Migration Advisor 检查其后,右键单击项目并单击 Run Migration Advisor。然后,Migration Advisor 会使用启用的检查器分析代码,并在 Eclipse 视图中显示找到的潜在问题的结果(参见图 4)。
图 4. Migration Advisor 视图
图 5 显示了一个不受 Power 平台支持的内置插件所导致的一个真实迁移问题的示例。为了修复该问题,可以在 Migration Advisor Eclipse 视图中双击它。然后将打开源代码视图,突出显示问题的准确位置。如果将鼠标移动到突出显示的代码上方并按 Ctrl+1,则会打开另一个弹出窗口,如图 5 所示。
图 5. 使用 Migration Advisor 进行快速修复
选择第一个选项 Builtin quick fix。应用快速修复后的结果代码如图 6 所示。
图 6. 应用 Migration Advisor 快速修复后的代码
其他有用的 Migration Advisor 检查包括:
特定于 x86 的程序集检查器
包含位字段的结构的检查器
Long double 使用检查器
性能降级检查器
特定于 x86 的编译器内置检查器的使用
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0