2011-12-07 187 views
6

我想嘗試一些ARM彙編代碼與蘋果iOS僅用於教育目的。我想從Xcode中的一些在線代碼開始。 我的理解是,我需要編譯iOS設備,例如我的iPhone,這意味着我需要支付99美元/年的會員資格。 我不認爲我可以在iOS手機模擬器上使用ASM彙編代碼。 我很難在Xcode env中使用iPhone查找有關ARM彙編代碼的示例,書籍或文檔。 我做錯了嗎?也許iOS不是學習ARM組件的用戶最友好的環境。iOS彙編代碼

+1

FWIW,這裏是一個編寫彙編程序的iOS [鏈接集](http://www.shervinemami.info/armAssembly.html)。我非常懷疑這個練習的價值,除了教育和娛樂之外。 – dasblinkenlight

+0

爲iOS/ARM編寫彙編代碼需要iOS設備和程序中的成員資格。要開始使用,它可能足以讀取由編譯器生成的ARM代碼,請參閱http://stackoverflow.com/questions/13166055/how-do-i-get-started-with-arm-on-ios –

+1

我在iOS下的ARM彙編的時機博客中提供了一些有用的鏈接和包含連接到Xcode項目.S文件的示例Xcode項目:http://www.modejong.com/blog/post10_arm_timing_framework/index.html – MoDJ

回答

1

您需要的是帶有基於Linux的編程工具包的ARM開發工具包。然後,您可以在Mac上安裝VirtualBox,創建Linux虛擬機並在虛擬Linux機器上安裝ARM開發工具。確保購買ARM開發套件時,它配備了ARM cpu,完整的開發/測試板,用於軟件傳輸/調試的USB電纜以及完整的Linux工具鏈。你可以找到這樣的套件少於99美元。

+1

如何這是否幫助他將他的任何代碼作爲二進制文件運行在他的iPhone上? – Strelok

+2

它並沒有,但是如果他想編寫和調試ARM彙編代碼,他將會使用適當的ARM開發工具包進行更進一步的工作。如果他不喜歡它,他可以轉售它,不像他的iOS開發者會員資格。 – Jacek

+0

如果他還不是已經不是開始的平臺的iOs開發人員。我同意Jacek。 –

2

即使沒有代碼簽名證書,我想你應該能夠去計劃彈出菜單(它的右側),然後選擇「iOS設備」

一旦你這樣做,那麼你可以選擇項目中的任何.c或.m(或.cpp或.mm)文件,打開助理編輯器,然後從助理編輯器跳線欄中選擇「組裝」。然後你可以並排看到你的源代碼和彙編代碼。

或者你也可以轉至產品菜單,並生成輸出 - >組裝

您可能會發現更容易下手的C代碼,在函數調用會更容易最初跟隨比Objective-C的方法調用。

11

備份...

你想學什麼?手臂組裝或iOS編程?選擇一個...

您是否有任何組裝經驗?

你認爲你想在臂組裝中學習什麼?跳入並編寫一些完整的gui應用程序?您需要學習將註冊表添加到寄存器add和or和xor中,並將答案保存在寄存器中。然後讀取和寫入一些內存位置。學習使用堆棧,進行調用等。然後用C或其他方式編寫應用程序,並使用asm進行手動調優或使用您的asm技能來調試編譯器和/或代碼。在asm中編寫應用程序或操作系統等是爲了想要發表聲明或有特定原因的人,而不是爲了教育目的。

給這幾分鐘或半小時,它不應該花很長時間才能通過,也許一個晚上,如果你認真對待它。

http://github.com/dwelch67/lsasim 看看learnasm.txt文件。

它是免費的,開放源代碼,應該用C編譯器工作大多數地方(如linux,unix,windows等),如果你不是程序員並且沒有基本的編譯器工具或編程技能,那麼去學習幾種語言(當然,請查看Python的難題http://learnpythonthehardway.org/),然後回到彙編程序上。上面提到的事情並不是一個ARM,但是有很多熟悉的功能。讓我知道我做過的工作有多好或多壞。

現在,這是ARM但Thumb指令集:

https://github.com/dwelch67/thumbulator

不是一個教程,但一個普通的,簡單的,指令集仿真器。應該很明顯的是模擬器中發生了什麼,您可以添加/修改/打印您想要查看的任何幫助進行調試的內容。您可以使用gcc,gnu彙編程序和/或llvm clang作爲交叉編譯器,使用嵌入式,拇指,cortex-m,ARM寄存器等方式讓自己的腳變得溼潤。按照其中一個例子,然後開始修改它。

有一些傾向於統一的ARM彙編語言,可以在基於ARM的內核和基於thumb2的內核上工作。不是所有需要的彙編語言,而是你可能想要編寫一個代碼模塊的地方,而不需要大量的代碼丟失。你當然可以在這裏弄個腳步,並在某些其他平臺上直接將這些代碼直接寫入完整的32位ARM指令。 thumbulator只是拇指,基於ARM的內核和基於thumb2的內核之間的通用指令集,基本上就是便攜式ARM指令集,只需編寫一次代碼,它幾乎可以在所有內核上運行。

你會在github上看到我有許多其他項目,樣本以彙編開始,然後進入引導代碼進入C語言。許多但不是全部基於ARM。硬件成本從10美元到50美元左右。例如,你可以看看yagbat的東西,並獲得免費的視覺男孩提前模擬器和模擬32位手臂指令或16位拇指或任何,並有一個模擬顯示,等等。或者,如果你有gameboy硬件或nds或nds lite和正確的墨盒,您可以在真正的硬件上運行程序。

我把那裏的東西放在那裏供人們學習。克服對第一次嵌入事物的恐懼,不知道如何交叉編譯等。我從其他許多類似的例子中學到了很多東西,我只是回覆了它的喜好。

如果您的目標是學習iOS編程,那麼請購買套件或其他軟件,並使用您希望學習的任何語言學習,熟練掌握,學習apis等。然後,如果您執行上面的某些彙編程序那麼你可以開始考慮從iOS程序調用asm函數或內聯彙編程序等。多少彙編程序,您的選擇。我不希望看到用該平臺的彙編程序編寫的應用程序,而是尋找如何從我的ios應用程序調用此彙編代碼,或者如何執行內聯彙編。 (不要學習內聯彙編,直到你擅長真正的彙編)。

沒有任何理由支付訪問模擬器,有許多手臂模擬器在那裏,一個在mame中,在gdb和其他地方的arm armulator,一些gameboy advance和任天堂ds simultators等等等,等等。當然有qemu手臂。還有更多的模擬器可能比你願意花時間去嘗試,我自己大約10年左右,而不是全部嘗試。

學習程序集不像C或python或java,我會寫一個掃雷遊戲來學習這種語言。你正在學習移動位的機制,小步驟,而不是編寫可用的應用程序。例如,使用16位處理器添加兩個128位數是一個有價值的彙編語言項目。將兩個數字(任意大小)乘以一個沒有乘法指令的處理器,這是另一個彙編器類型學習項目。是的,我同意你可以通過從iOS應用程序調用asm來學習這些東西,但是如果你還沒有iOS開發工具包,並且知道如何編寫iOS應用程序,那麼在開始考慮彙編程序之前,你有很多學習要做。

如果我的方式與你問的問題沒有問題,我會很樂意刪除這個答案...