uyarlanır? - Porting


Vikipedi, özgür ansiklopedi

Olarak yazılım mühendisliğinde , Taşıma işlemi (bu uygulama için demek) belirli bir program aslında için tasarlanmış olandan farklı olan bir bilgisayar ortamında icra bir halinin elde edilmesi amacıyla, yazılım uyarlama işlemi (örneğin farklı işlemci , işletim sistem , ya da üçüncü parti kütüphane ). Yazılım / donanım farklı ortamlarda onları kullanışlı hale getirmek için değiştirildiğinde terim de kullanılır.

Yazılım olan portatif yeni bir platforma için taşıma maliyeti sıfırdan yazmak maliyeti çok daha az olduğu zaman. Onun uygulanması maliyeti göreceli yazılım, taşıma maliyeti daha düşük, daha taşınabilir olması söylenir.

etimoloji

"Port" terimi Latince türetilmiştir portare "taşımak" anlamına gelen. Kod belirli uyumlu olmadığı zaman işletim sistemi veya mimarlık , kod yeni sisteme "taşınan" olmalıdır.

Terim, genel olarak, aynı işlemci ve işletim sistemine daha az bellek ile çalıştırmak için yazılım uyarlanması işlemi uygulanmaz, ne de farklı bir kaynak kod tekrar yazılmasını uygulanır dil (örneğin dil dönüştürme ya da dönüştürme).

Yazılım geliştiriciler genellikle yazdıkları yazılım olduğunu iddia taşınabilir küçük bir çaba yeni bir ortama adapte etmek gereklidir, yani. Aslında gerekli çaba miktarı orijinal ortamı (hangi ölçüde dahil olmak üzere birçok faktöre bağlıdır kaynak platformu ) yeni ortama (farklı hedef platform ), orijinal yazarların deneyim bilerek programlama dili yapıları ve üçüncü parti kütüphane aramalar taşınabilir olması olası değildir ve sadece taşınabilir yapılar kullanılarak orijinal yazarlar tarafından yatırılan çaba miktarı (platforma özel yapıları sıklıkla daha ucuz bir çözüm sağlamak).

Tarihçe

Masaüstü bugün kullanılan önemli ölçüde farklı CPU'lar ve işletim sistemlerinin sayısı geçmişe oranla çok daha küçüktür. Hakimiyeti x86 mimarisi çoğu masaüstü yazılımı farklı bir CPU taşıdık asla anlamına gelir. : Aynı pazarında, işletim sistemi seçiminde etkili şekilde üçe düşürüldü Microsoft Windows , MacOS ve Linux . Ancak, içinde gömülü sistemler ve mobil marketler, taşınabilirliği ile, önemli bir sorun olmaya devam etmektedir ARM yaygın olarak kullanılan alternatif bir üründür.

Böyle tarafından yayımlanan gibi Uluslararası standartlar, ISO , büyük ölçüde farklı standartlara uygun arasındaki farkları azaltmaya yardımcı olacak şekilde işlem ortamının detaylarını belirterek taşıma kolaylaştırmak platformları . Bu standartlara göre belirlenen sınırlar dahilinde kalması Yazma yazılım pratik rağmen nontrivial çaba gösterir. (Örneğin iki standartlara uyumlu platformlar arasında böyle bir programı Porting POSIX.1'e ) kaynak kodunu yükleme ve sadece bir konu olabilir recompiling yeni platformda bunu. Ancak, uygulayıcılar çoğu zaman çeşitli küçük düzeltmeler nedeniyle ince bir platform farklılıklarından dolayı, gerekli olduğunu bulmak. Çoğu standartlar standartların yorumlanmasında farklılıklar platformdan platforma küçük farklılıklara yol açabilir "gri alanlar" muzdarip.

Ayrıca gibi taşınabilmesini kolaylaştırmak için araçlar arasında sürekli artan sayıda var , GNU derleyicisi farklı platformlarda tutarlı programlama dilleri sağlar, ve Autotools ortamında azınlık varyasyonlar algılanmasını otomatik hale getirir ve derleme önce buna göre yazılım uyarlar, .

Bazıları için derleyiciler yüksek seviyeli programlama dilleri (mesela Eiffel , Esterel ) Başka bir üst düzey kaynak kodunu çıkışı yaparak taşınabilirliği kazanç ara dili (örneğin  C birçok platformlar genellikle mevcuttur için hangi derleyicileri).

İlgili (ancak farklı) süpürmede İki aktivitelerdir taklit ve çapraz derleme .

derleyiciler Porting

Bunun yerine doğrudan çevirme makine koduna modern derleyiciler bir makine bağımsız çevirmek ara kod derleyici taşınabilirliğini artıran ve tasarım çalışmalarını en aza indirmek için. Ara dil bir tanımlayan sanal makine yazılmış tüm programları çalıştırmak için ara dil (bir makine kendi dil ve tam tersi şekilde tanımlanır). Ara kod talimatları ile eşdeğer makine kodu dizilerine çevrilmiştir kod jeneratörü oluşturmak için çalıştırılabilir kod . Aslında bir uygulayarak makine kodunu nesil atlar da mümkündür tercüman veya JIT sanal makine için.

Kendisine yapılmış derleyici sadece makine bağımlı kod (yorumlayıcı veya kod üreteci) hedef makineye çaprazlanmak için bir ara kod kullanımı derleyici taşınabilirliği artırır. Derleyici kalanı ara kod olarak içe ve daha sonra bu şekilde derleyici yazılım üreten ya da doğrudan yorumlayıcısı ara kod yürütülmesi portlu kod üreteci veya yorumlayıcı tarafından işlenebilir. Makine bağımsız bölüm geliştirilen ve bir başka makineye (üzerinde test edilebilir konak makinesi ). Makine bağımsız bölüm taşınabilir ara kodu oluşturmak için sadece bir kez geliştirilmelidir, çünkü bu büyük ölçüde, tasarım çabaları azaltır.

Bir tercüman nedeniyle program kodunun onun sınırlı görünümüne kod optimizasyonları yapmak mümkün olmadığı için (sadece bir seferde bir talimat görürse ve yapmak için bir diziyi ihtiyaç daha az karmaşık ve bir kod üreteci daha noktasına nedenle daha kolaydır optimizasyonu). onlar sadece temel donanım set talimat hakkında çok az varsayımlarda çünkü bazı tercümanlar, liman son derece kolaydır. Sonuç olarak, sanal makine hedef CPU bile daha basittir.

Derleyici çevirmek gerekiyordu programlama dili tamamen derleyici kaynaklar Yazma, daha iyi olarak bilinen aşağıdaki yöntemi yapar derleyici önyüklemesinin hedef makinede uygulanabilir:

  1. Liman tercüman. Bu kodlanması gereken montaj kodu zaten mevcut kullanarak, assembler hedefte.
  2. Yeni makineye kod üreteci kaynağını uyarlayın.
  3. giriş olarak kod üreteci kaynağı ile yorumlayıcı kullanılarak adapte kaynağı yürütür. Bu kod jeneratör için makine kodu oluşturur.

optimizasyon rutinleri kodlama zor kısmı üst düzey dil yerine hedefin montaj dili kullanılarak yapılır.

Tasarımcıları olan BCPL dil, makine kodundan daha kompakt (BCPL durumunda) kodu yorumlanır; tipik olarak bir ila iki bir faktör ile. Yorumlanır kod ancak aynı makinede derlenen kodun göre yaklaşık on kat daha yavaş çalışır.

Tasarımcıları Java programlama dili bir Java programı yürütme hedefin üzerinde başlamadan önce Internet üzerinden iletilen gerekebilir, çünkü yorumlanır kod kompakt yararlanmak için denemek Java Virtual Machine .

video oyunları Taşıma İşlemi

Taşıma İşlemi ayrıca kullanılan terimdir video oyun bir tek platformda çalıştırmak o olacak şekilde tasarlanmıştır çarşı , video oyun konsolu veya kişisel bilgisayar , farklı bir platformda çalıştırmak dönüştürülür. Daha önce video oyunu "port" çoğu zaman gerçek portları değildi, daha ziyade oyunların versiyonlarını yeniden çalışıldı. Ancak, birçok 21. yüzyıl video oyunları yazılımı (genellikle de kullanılarak geliştirilmiş olan C ++ ) bir veya daha fazla konsolları için hem de fiilen taşınması için gerek (yerine bireysel bileşen ortak numaranın taşınması dayanmadan bir PC için çıkış kodu can kütüphaneler ).

Bilgisayarlar büyük ölçüde farklıydı çünkü çoğu erken portları önemli oyun kalitesi sorunları yaşadı. Richard Garriott , 1984'te belirtilen Origins Oyun Fuarı bu Menşei Sistemleri için bilgisayar oyunları geliştirildi Apple II serisinin ilk önce onları taşıdık Commodore 64 ve Atari 8-bit ikincisi makineler Çünkü, sprite ve diğer gelişmiş özellikler onlardan Apple'a taşıma yapılan " "hatta belki de imkansız, çok daha zor. Yorumlar Apple'ın "kötü ses ve siyah-beyaz-yeşil-mor grafikleri" koruyarak "Apple conversionitis" muzdarip limanların şikayet; ne zaman Garriott açıklamaya sonra, Dan Bunten sorulan "izleyici Atari ve Commodore insanları, size Elma yeniden yazar memnun musunuz?" seyirci "Hayır!" diye bağırdı Garriott "[aksi] Elma versiyonu halletmek asla. Akıllıca para değil görünümünde bir yayıncının noktadan itibaren" yanıt verdi.

Diğerleri farklı çalıştı. Ozark softscape , örneğin, yazdığı katır o kaldırılmasını veya taşıma sırasında gerektiği gibi özellikleri değiştirerek, en gelişmiş bilgisayarlar için geliştirmeye tercih çünkü ilk Atari için. Bir politika her zaman mümkün değildi Böyle; Bunten "MULE bir Apple için yapılamaz" belirterek, olmayan Atari versiyonları o Altın Yedi Şehirler aşağı idi.

Bir oyun olarak adlandırılır zaman "mükemmel çarşı", bu oyun bir aktarıldığını demektir çarşı oyunun işleyişine önemli değişiklikler olmadan böyle bir konsola veya bilgisayar gibi başka bir platformda, sürüm. Bu grafik, ses ve anlamı oyun , (böcek dahil) oyunun diğer özellikleri ile birlikte çarşı sürümüne sadık bulunmaktadır. Çoğunlukla bazen profesyonel eleştirmenler tarafından kullanılan bir terimdir, ama her zaman değil, oyun% 100 özdeş olduğu anlamına gelir. Genellikle farklılıklar ya da sadece liman en orijinal oyunun deneyimini korunmuş bir olabileceğini (örneğin daha uzun yükleme süreleri gibi) küçük olması anlamına gelir.

"(Konsol) bağlantı noktası" aslında bir konsola (örneğin Wii ya da için yapılan bir oyundur Xbox 360 bir çalınabilir oluşturulan özdeş sürümü öncesi) kişisel bilgisayar veya başka bir konsola. Bu terim yaygın oyun topluluğu tarafından kullanılmaktadır. PC'ye bir konsoldan bir oyun taşıma işlemi nedeniyle genellikle bilgisayarlar genellikle çalıştırmak boyunca sabit olmak donanımı avutmaya, kısmen nedeniyle atıl ediliyor olması performansın daha yüksek seviyelere olumsuz kabul edilir, (oyunlarla konsol özellikleri için geliştirilmekte olan) donanım geliştikçe, aynı zamanda nedeniyle taşınmış oyunlar bazen kötü PC'ler için optimize veya tembel uyarlanması için çalışılmaktadır olarak PC'ler daha güçlü hale ederken. Büyük ölçüde benzer iken, mimari farklılıklar kullanımı gibi mevcut olabilir birleşik bellek konsolda.

Ayrıca bakınız

notlar

Referanslar

  • Martin Richards ve Colin Whitby-Strevens (1984): BCPL, dil ve derleyici. ISBN  0-521-28681-6 .
  • Andrew S. Tanenbaum (1984): Yapısal bilgisayar organizasyonu 10 Baskı. ISBN  0-13-854605-3 .