<<>Problem>:
我正在使用一个大型的C/C++代码基数,该基数按缺省32倍(打字型)计算。
该法典还有很多条线+嵌入式的组装,它们把 en作为惯性类型处理,而且在许多情况下,um数据被用作32条轨道旗帜。
当用真实情况ARM RV 2.2汇编者汇编这一代码时,我们开始发现许多问题,因为真实情况汇编者决定,自动地根据表格的价值确定如下:rel=“nofollow noreferer”>。 http://www.keil.com/support/man/docs/armccref/armccref_Babjdhe.htm。
例如,
审议以下要点:
enum Scale {
TimesOne, //0
TimesTwo, //1
TimesFour, //2
TimesEight, //3
};
该国旗被用作32条轨道旗。 但是,汇编者优化了这一平台,使之达到未经签字的果园类型。
采用Senum_is_int codificationer办法,不是我们案件的良好解决办法,因为它把所有内容转换为32条轨道,这将打破与未经——enum_is_int编纂的任何外部法典的互动。
这份警告载于RVCT汇编器和办公室;图书馆指南。
The --enum_is_int option is not recommended for general use and is not required for ISO-compatible source. Code compiled with this option is not compliant with the ABI for the ARM Architecture (base standard) [BSABI], and incorrect use might result in a failure at runtime. This option is not supported by the C++ libraries.
<<><><><><>>>>><><><>>>>>
如何在不影响价值排序的情况下将所有基类(通过手编码改动)改为使用32比值?
enum Scale {
TimesOne=0x00000000,
TimesTwo, // 0x00000001
TimesFour, // 0x00000002
TimesEight, //0x00000003
};
我尝试了上述变化。 但是,汇编者也优化了我们坏的uck子。
这里有一些yn。 NET
注:
这一标准是ISO C++标准,而ARM编纂者缺乏标准?
在ARM RVCT 2.2汇编者中,没有控制这一 en。 是否有任何隐蔽的rag?