• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      iOS7下編寫64位應用的探索與展望

      2013-08-15 00:54:11杜紀魁
      科技視界 2013年27期
      關鍵詞:數(shù)據(jù)類型調(diào)用寄存器

      杜紀魁

      (無錫商業(yè)職業(yè)技術學院 物聯(lián)網(wǎng)技術學院,江蘇無錫 214153)

      美國太平洋時間2013年9月10日上午10點,北京時間2013年9月11日凌晨1點,蘋果在美國加州總部召開新品發(fā)布會。本次發(fā)布會上,正式發(fā)布iPhone5c和iPhone5s。iPhone5s于9月20日開賣,首批開賣的國家共有九個包括美國、澳大利亞、加拿大、中國(包括香港)、法國、德國、日本、新加坡、英國,而中國首次被蘋果列為首批iPhone開賣的國家。

      iPhone5s最大的變化是A7的處理器+M7運動協(xié)處理器,A7是全球首款被用于智能手機上的ARM架構64位處理器,CPU/GPU性能均比iPhone 5的A6快2倍,CPU性能是初代iPhone的40倍,GPU性能則是初代的56倍[1]。 菲爾·席勒在發(fā)布會上表示:“這是有史以來第一個移動端64位處理器,其他人甚至還沒有開始討論64位處理器。增加的寄存器,讓A7的計算更有效率,顯著提高編碼和解碼一類計算任務的表現(xiàn)。同時,更高的時鐘速度和改進的GPU將使新的iPhone 5S產(chǎn)生質(zhì)的飛躍。但是64位處理會消耗更多的內(nèi)存。[2]新平臺的投入也使這個平臺的開發(fā)與老平臺應用的升級擺在了開發(fā)者面前。

      1 IOS應用開發(fā)介紹

      iOS是由蘋果公司為iPhone、iPad等移動設備開發(fā)的操作系統(tǒng),2010年6月更名為iOS。iOS的系統(tǒng)架構分為四個層次:核心操作系統(tǒng)層,核心服務層,媒體層,可輕觸層。應用程序由Objective-C語言開發(fā)。

      想要開發(fā)一個IOS應用,就必須用到iOS軟件開發(fā)套件(SDK)以及蘋果公司的集成式開發(fā)環(huán)境(IDE)Xcode,這些在蘋果開發(fā)者官方網(wǎng)站可以直接下載(https://developer.apple.com/ios7/)。Xcode有源代碼編輯器、圖形用戶界面編輯器以及其他多種功能,從可定制構建到源代碼倉庫管理等。Xcode采用單窗口的形式,并將這種形式稱為“工作區(qū)窗口”,所需要的大部分數(shù)據(jù)都在這個工作區(qū)窗口里面。熟悉Xcode以后,你就能輕松地在編寫代碼、除錯調(diào)試和界面設計中變換,而無需來回切換窗口。iOS SDK則能夠擴展Xcode工具組,內(nèi)容包括創(chuàng)建iOS應用專門的工具、編譯器和框架等。Xcode提供了一系列用來管理整個開發(fā)流程的工具,從創(chuàng)建應用到測試、優(yōu)化應用,直至上傳應用到App Store。

      當然,最好的開發(fā)套裝就是裝著Mac ox的Mac蘋果電腦,Xcode開發(fā)工具,iOS SDK。

      所有iOS應用的背后都運行著Objective-C這個面向對象語言。Objective-C是C語言的一個超集,也就是說我們可以在項目中同時使用C語言和Objective-C語言,但是要構建iOS應用必須依靠Objective-C。從這個地方可以看出,在基本語法上,iOS的開發(fā)和32位PC應用程序開發(fā)沒有本質(zhì)不同,當然,程序架構模式上是有區(qū)別的。

      2 64位A7處理器介紹及32位應用程序的升級

      A7使用的是ARM V8架構,除了使用64位的地址總線和64位的寄存器以外,還增加了寄存器的數(shù)量,目前A7中的整數(shù)和浮點數(shù)寄存器是A6的兩倍。

      寄存器的增加大大提高了程序的運行速度。將CPU由32位提高到64位,最主要的改變增大了尋址能力,可以突破32位系統(tǒng)只能訪問3G內(nèi)存的限制,但是,32位到64位的改變并不一定意味著程序運行速度的提高,甚至有些情況下會因為64位系統(tǒng)中的數(shù)據(jù)占用內(nèi)存變大而導致程序運行速度變慢。而寄存器數(shù)量的增加,則直接提高了程序運行速度,當然,前提應用需要重新為64位系統(tǒng)編譯一遍,讓程序可以充分使用所有的寄存器。

      使用蘋果公司提供的Xcode 5可以快速將以前的應用編譯成64位應用。在編譯過程中只需要把支持的設備改成“iOS 7”并把應用的體系結構設置選項由 “Architectures”改成 “Standard Architectures(including 64-bit)”這種支持64平臺的即可。

      由于64位系統(tǒng)與32位系統(tǒng)在數(shù)據(jù)類型等方面的差異,任何平臺上32位應用升級為64位應用大體使用的方法都是是一個反復迭代的過程,不斷地在一些細節(jié)問題上來來回回,如字節(jié)序、調(diào)整編譯器選項等等,修改相關代碼并測試程序,解決出現(xiàn)的問題。并時不時停下來查看是否達到了總體目標--遵從ANSI標準及源代碼將來的可移植性。

      Xcode 5編譯的iOS 7程序結果包括32位和64位兩套二進制代碼,在32位的iOS系統(tǒng)上會調(diào)用32位的二進制代碼,在64位系統(tǒng)上會調(diào)用64位的二進制代碼,以此來解決向后兼容的問題。

      蘋果考慮到很多32位的程序可能在沒有重新編譯的情況下部署到64位系統(tǒng)上,64位的iOS系統(tǒng)中帶有兩種FrameWork,分別是32位和64位的。當64位的iOS系統(tǒng)運行原來的32位程序時,系統(tǒng)會調(diào)用32位的FrameWork作為底層支撐,當系統(tǒng)運行64位程序時,系統(tǒng)會調(diào)用64位的FrameWork作為底層支撐。

      也就是說,當一個iPhone 5S上同時運行32位程序和64位程序時,系統(tǒng)同時將32位和64位兩套FrameWork載入了內(nèi)存中,所以消耗的內(nèi)存也比較多。如果一臺64位的iOS設備上運行的所有程序都是為64位系統(tǒng)編譯過的,iOS系統(tǒng)將只載入64位的FrameWork,這將節(jié)省好多內(nèi)存。所以,如果大家都可以快速將程序傳換成64位的,iOS將跑得更快。

      3 開發(fā)64位的iOS系統(tǒng)主要注意事項[3]

      32位的iOS系統(tǒng)和64位的iOS系統(tǒng)主要的差別有兩個,一個是數(shù)據(jù)類型的差別,一個是過程調(diào)用方法的差別。在數(shù)據(jù)類型上,主要的變化是指針類型(Pointer)和長整數(shù)類型(long)的長度變化和內(nèi)存對齊方式的變化,同時也導致了更高級別數(shù)據(jù)類型的變化,如NSInteger的長度也有變化。

      在過程調(diào)用方法上,因為ARM V8和ARM V7具有不同數(shù)量的寄存器,具有不同的過程調(diào)用約定,所以32位系統(tǒng)和64位系統(tǒng)在匯編層級也是不同的。

      而這些變化會帶來諸多影響,需要我們在轉換或開發(fā)程序時注意。

      3.1 規(guī)范不同數(shù)據(jù)類型間的賦值

      由于在32位系統(tǒng)中l(wèi)ong和int的長度是一樣的,不少開發(fā)者習慣將長整型數(shù)據(jù)(long)賦予整型(int),這在64位系統(tǒng)中是可能會出問題的。因為64位系統(tǒng)中l(wèi)ong比int長,將long值賦予int將導致數(shù)據(jù)丟失。

      同樣,因為在32位系統(tǒng)中指針類型(Pointer)和整型(int)的長度是一樣的,也有開發(fā)者習慣把指針類型(Pointer)直接賦給一個整型(int)存放。但在64位系統(tǒng)中就會有問題,因為64位系統(tǒng)中指針類型(Pointer)比整型(int)長,將指針類型(Pointer)值賦予整型(int)將導致地址數(shù)據(jù)丟失,最終導致嚴重問題。

      同時還有無符號整數(shù)和有符號整數(shù)的混用等都會出現(xiàn)32位系統(tǒng)與64位系統(tǒng)結果不一致的情況。

      例如:

      int i=-2;

      unsigned int j=1;

      long l=i+j;

      32位下是-1,在64位下是4294967295。原因在于表達式(i+j)是一個unsigned int表達式,但把它賦值給k時,符號位沒有被擴展。要解決這個問題,兩端的操作數(shù)只要均為signed或均為unsigned就可。

      因此,在程序中盡量避免不同數(shù)據(jù)類型間的轉換并進行認真檢查和測試才能夠保證程序的穩(wěn)定運行。

      3.2 注意與二進制位相關的運算操作

      在32位系統(tǒng)上定義一個結構包含兩個長整型(long)類型,第二個長整型(long)數(shù)值的偏移量是4個字節(jié),可以通過結構地址加4的方式獲取,但是在64位系統(tǒng)上就會出錯,因為在64位系統(tǒng)中第二個長整型(long)數(shù)值的偏移量是8個字節(jié)。

      其他有關位運算的技術使用中也應注意,比如掩碼技術,在使用一個長整型(long)的掩碼,轉到64位系統(tǒng)后高位都是0,計算出來的結果可能不符合預期。

      3.3 其它應注意事項

      3.3.1 重視32位應用和64位應用之間的數(shù)據(jù)交換

      大多數(shù)iOS應用不可避免的會通過網(wǎng)絡交換數(shù)據(jù),同時用戶保存的數(shù)據(jù)也可能通過備份等方式在32位系統(tǒng)和64位系統(tǒng)之間切換,所以應用在保存和發(fā)送流數(shù)據(jù)的時候一定要考慮充分。比如數(shù)據(jù)在32位系統(tǒng)中保存,在64位系統(tǒng)中能否正常打開,或者反過來,在64位系統(tǒng)中保存,在32位系統(tǒng)中打開是否正常。

      3.3.2 注意匯編語言代碼的規(guī)范

      如果在應用代碼中需要嵌入?yún)R編語言代碼,則需要參考64位系統(tǒng)的指令集來編寫匯編代碼。

      3.3.3 不進行可變參數(shù)過程與定參過程的相互轉換

      32位系統(tǒng)和64位系統(tǒng)對于這兩種過程調(diào)用方式的處理方法不同,因此不要進行類似轉換。

      3.3.4 iOS 7 開發(fā)需要注意的事項

      iOS 7的正式上線是隨著iPhone5S正式上市開始的。在iOS 7應用沒有大量推出之前,蘋果公司給開發(fā)人員提供過渡性指導:

      (1)確保應用內(nèi)容在半透明的UI元素中清晰可見。

      (2)重新設計自定義欄中按鍵的圖標。在iOS 7中,自定義欄發(fā)生了較大的改變。

      (3)設計好無邊框按鍵,重新設計應用布局。

      (4)支持動態(tài)輸入。在iOS 7中,用戶能夠調(diào)節(jié)輸入時獲選詞的大小,開發(fā)人員應該注意這一點。

      (5)確保應用的手勢控制不會與iOS 7中新的手勢形成沖突。

      (6)注意iOS 7中新的陰影、漸變和切面等視覺效果,以獲得最好的視覺體驗。

      (7)在必要的時候,使用應用在iOS 6系統(tǒng)下最佳的設定,如自動布局等。確保應用沒有使用過時的API。

      4 總結與展望

      總的來說,64位的A7處理和iOS 7都是新生事物——A7是移動智能終端上的第一款64位處理器,而iOS 7的上線也讓不少蘋果愛好者褒貶不一。但不可否認的是,A7處理器的應用可以使得iPhone的應用運行更流暢,而開發(fā)者如果想讓用戶體驗更好,就必須去迎合64位的應用開發(fā)特點。

      據(jù)蘋果本周一 (2013年9月23日)公布的數(shù)據(jù)顯示,iPhone 5S和iPhone 5C在上市后首個周末就銷售了900萬部,遠高于iPhone 5上市首個周末500萬部的銷量。而美國移動應用分析公司Localytics發(fā)布調(diào)查報告稱,蘋果最新智能手機iPhone 5C、iPhone 5S上市僅三天時間,就已經(jīng)占據(jù)美國市場iPhone激活率的1.36%。其中,iPhone 5S在美國的激活率是iPhone 5C的3.4倍,在全球市場更是高達3.7倍。[4]這說明更高端速度更快的A7處理器用戶會大量涌現(xiàn),64位的應用開發(fā)大有可為。

      [1]http://www.apple.com/cn/iphone-5s/[OL].apple,2013-09-10.

      [2]64位核心 A7處理器的IPAD或真正取代 PC.http://news.zol.com.cn/article/157559.html[OL].中關村在線,2013-09-13.

      [3]64-Bit Transition Guide for Cocoa Touch.https://developer.apple.com/library/ios/navigation/index.html[OL].apple,2013-09-18.

      [4]分析公司調(diào)查報告出爐:全球5S銷量是5C的3.7倍.http://it.sohu.com/20130924/n387106450.shtml[OL].搜狐 IT,2013-09-24.

      猜你喜歡
      數(shù)據(jù)類型調(diào)用寄存器
      詳談Java中的基本數(shù)據(jù)類型與引用數(shù)據(jù)類型
      如何理解數(shù)據(jù)結構中的抽象數(shù)據(jù)類型
      Lite寄存器模型的設計與實現(xiàn)
      計算機應用(2020年5期)2020-06-07 07:06:44
      核電項目物項調(diào)用管理的應用研究
      LabWindows/CVI下基于ActiveX技術的Excel調(diào)用
      測控技術(2018年5期)2018-12-09 09:04:46
      分簇結構向量寄存器分配策略研究*
      基于系統(tǒng)調(diào)用的惡意軟件檢測技術研究
      利用RFC技術實現(xiàn)SAP系統(tǒng)接口通信
      高速數(shù)模轉換器AD9779/AD9788的應用
      一種可重構線性反饋移位寄存器設計
      通信技術(2010年8期)2010-08-06 09:29:16
      深水埗区| 甘南县| 高平市| 正安县| 敦化市| 会理县| 砀山县| 务川| 衡山县| 元谋县| 赞皇县| 和硕县| 吉木萨尔县| 静宁县| 灵台县| 玉环县| 罗定市| 屏东县| 克什克腾旗| 恩平市| 和田县| 平顺县| 辽中县| 厦门市| 灌阳县| 类乌齐县| 藁城市| 栾川县| 盐边县| 信宜市| 清远市| 井陉县| 南充市| 景宁| 澄城县| 汝阳县| 济南市| 上虞市| 土默特左旗| 丰镇市| 隆尧县|