作者shawen (开心过暑假)
看板ASM
标题Re: [请益] 把C++ code转换为Arm code的软体
时间Thu Sep 16 17:45:49 2010
※ 编辑: shawen 来自: 111.71.68.202 (09/06 15:43)
1F:→ proach:为什麽我觉得你说的是C++ Compiler for ARM ? 09/06 17:51
2F:→ ksmrt0123:同感~ 09/06 18:39
3F:→ hilorrk:那个...g++行吗... 09/06 20:20
4F:推 bobhsiao:google "arm gcc" 第一个 09/06 22:20
5F:→ shawen:看完说明文章之後 我也发现了原来如此.... 囧 09/07 12:02
6F:→ shawen:各位人都太好 可以原谅我的搞笑 不好意思献丑了 囧rz 09/07 12:02
7F:→ sorkayi:我怎麽觉得好像就是编译器 arm gcc吗 09/07 18:16
8F:→ ruemann:差不多吧,他本来的code是在其他的MCU上跑,现在换ARM而已 09/07 18:39
谢谢各位的建议
自己回覆一下自己的文章以及遇到的问题
目前我使用的compiler是MDK armcc armasm armlink等指令试过了
简单的程式转换有见到理想的结果
不过我遇到另外的问题 不晓得其他前辈有没有遇到过? 想要像大家请教一下
我在转换目前需要的文件的时候 突然出现了一堆error
追踪的结果是最初的define有问题
======================================================
typedef signed __int8 s8;
typedef signed __int16 s16;
typedef signed __int32 s32;
typedef signed __int64 s64;
typedef unsigned __int8 u8;
typedef unsigned __int16 u16;
typedef unsigned __int32 u32;
typedef unsigned __int64 u64;
#define EXPORT extern "C" __declspec(dllexport)
#define EXPORT_CALL __stdcall
#define FASTCALL __fastcall
======================================================
如文中所见 我打开了header file之後看到他的定意是这样的格式
但__int8 __int16等似乎都不是标准的CPP支援的格式
我把__int8换成char __int16换成short __int32换成int __int64换成long long
之後就没有了error的问题
(当然 如同书上所说的 要是全部的宣告都可以变成int才是最好的结果)
但我接下来遇到的问题是像
#define EXPORT_CALL __stdcall
#define FASTCALL __fastcall
这些东西不知道该怎麽更换? 不知道各位前辈有没有解决的办法?
或者更直观的想法 如果当初这位使用者
(这是open source的code 他说要用Visual studio 2010才能跑)
能够定意这些的东西并且正常执行的话 一定有一个相对应的lib file或者header file
如果在这样的情况下 是不是我缺少了哪个header file或者要去哪边寻找/添加才可以?
我已经用过source insight查过这个project里似乎没有__int8 __fastcall之类的定义
找起来还不是很顺手 想请问一下大家遇到这样的define应该要如何是好?
因位是在许多的header file里面会用到的 全部改掉的话好像有点担心会出现问题
先谢谢各位了
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.82.172.215
9F:→ suhorng:__stdcall, __fastcall 只是指定函式呼叫时参数传递/推入 09/22 20:05
10F:→ suhorng:堆叠的顺序, 如果这在你的code中不重要, 应该可以砍掉? 09/22 20:05