作者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