Porting

In software engineering, porting is the process of adapting software for the purpose of achieving some form of execution in a computing environment that is different from the one that a given program (meant for such execution) was originally designed for (e.g., different CPU, operating system, or third party library). The term is also used when software/hardware is changed to make them usable in different environments.[1][2]

Software is portable when the cost of porting it to a new platform is significantly less than the cost of writing it from scratch. The lower the cost of porting software relative to its implementation cost, the more portable it is said to be.

Etymology

The term "port" is derived from the Latin portāre, meaning "to carry".[3] When code is not compatible with a particular operating system or architecture, the code must be "carried" to the new system.

The term is not generally applied to the process of adapting software to run with less memory on the same CPU and operating system.

Software developers often claim that the software they write is portable, meaning that little effort is needed to adapt it to a new environment. The amount of effort actually needed depends on several factors, including the extent to which the original environment (the source platform) differs from the new environment (the target platform), the experience of the original authors in knowing which programming language constructs and third party library calls are unlikely to be portable, and the amount of effort invested by the original authors in only using portable constructs (platform specific constructs often provide a cheaper solution).

History

The number of significantly different CPUs and operating systems used on the desktop today is much smaller than in the past. The dominance of the x86 architecture means that most desktop software is never ported to a different CPU. In that same market, the choice of operating systems has effectively been reduced to three: Microsoft Windows, macOS, and Linux. However, in the embedded systems and mobile markets, portability remains a significant issue, with the ARM being a widely used alternative.

International standards, such as those promulgated by the ISO, greatly facilitate porting by specifying details of the computing environment in a way that helps reduce differences between different standards-conforming platforms. Writing software that stays within the bounds specified by these standards represents a practical although nontrivial effort. Porting such a program between two standards-compliant platforms (such as POSIX.1) can be just a matter of loading the source code and recompiling it on the new platform, but practitioners often find that various minor corrections are required, due to subtle platform differences. Most standards suffer from "gray areas" where differences in interpretation of standards lead to small variations from platform to platform.

There also exists an ever-increasing number of tools to facilitate porting, such as the GNU Compiler Collection, which provides consistent programming languages on different platforms, and Autotools, which automates the detection of minor variations in the environment and adapts the software accordingly before compilation.

The compilers for some high-level programming languages (e.g. Eiffel, Esterel) gain portability by outputting source code in another high level intermediate language (such as C) for which compilers for many platforms are generally available.

Two activities related to (but distinct from) porting are emulating and cross-compiling.

Porting compilers

Instead of translating directly into machine code, modern compilers translate to a machine independent intermediate code in order to enhance portability of the compiler and minimize design efforts. The intermediate language defines a virtual machine that can execute all programs written in the intermediate language (a machine is defined by its language and vice versa).[4] The intermediate code instructions are translated into equivalent machine code sequences by a code generator to create executable code. It is also possible to skip the generation of machine code by actually implementing an interpreter or JIT for the virtual machine.[5]

The use of intermediate code enhances portability of the compiler, because only the machine dependent code (the interpreter or the code generator) of the compiler itself needs to be ported to the target machine. The remainder of the compiler can be imported as intermediate code and then further processed by the ported code generator or interpreter, thus producing the compiler software or directly executing the intermediate code on the interpreter. The machine independent part can be developed and tested on another machine (the host machine). This greatly reduces design efforts, because the machine independent part needs to be developed only once to create portable intermediate code.[6]

An interpreter is less complex and therefore easier to port than a code generator, because it is not able to do code optimizations due to its limited view of the program code (it only sees one instruction at a time, and users need a sequence to do optimization). Some interpreters are extremely easy to port, because they only make minimal assumptions about the instruction set of the underlying hardware. As a result, the virtual machine is even simpler than the target CPU.[7]

Writing the compiler sources entirely in the programming language the compiler is supposed to translate, makes the following approach, better known as compiler bootstrapping, feasible on the target machine:

  1. Port the interpreter. This needs to be coded in assembly code, using an already present assembler on the target.
  2. Adapt the source of the code generator to the new machine.
  3. Execute the adapted source using the interpreter with the code generator source as input. This will generate the machine code for the code generator.

The difficult part of coding the optimization routines is done using the high-level language instead of the assembly language of the target.

According to the designers of the BCPL language, interpreted code (in the BCPL case) is more compact than machine code, typically by a factor of two to one. Interpreted code however runs about ten times slower than compiled code on the same machine.[8]

The designers of the Java programming language try to take advantage of the compactness of interpreted code, because a Java program may need to be transmitted over the Internet before execution can start on the target's Java virtual machine (JVM).

Porting of video games

Porting is also the term used when a video game designed to run on one platform, be it an arcade, video game console, or personal computer, is converted to run on a different platform, perhaps with some minor differences.[9] From the beginning of video games through to the 1990s, "ports", at the time often known as "conversions", were often not true ports, but rather reworked versions of the games due to the limitations of different systems. For example, the 1982 game The Hobbit, a text adventure augmented with graphic images, has significantly different graphic styles across the range of personal computers that its ports were developed for.[10] However, many 21st century video games are developed using software (often in C++) that can output code for one or more consoles as well as for a PC without the need for actual porting (instead relying on the common porting of individual component libraries).[10]

Porting arcade games to home systems with inferior hardware was difficult. The ported version of Pac-Man for the Atari 2600 omitted many of the visual features of the original game to compensate for the lack of ROM space and the hardware struggled when multiple ghosts appeared on the screen creating a flickering effect. The poor performance of the Atari 2600 Pac-Man is cited by some scholars as a cause of the video game crash of 1983.[11]

Many early ports suffered significant gameplay quality issues because computers greatly differed.[12] Richard Garriott stated in 1984 at Origins Game Fair that Origin Systems developed video games for the Apple II first then ported them to Commodore 64 and Atari 8-bit computers, because the latter machines' sprites and other sophisticated features made porting from them to Apple "far more difficult, perhaps even impossible".[13] Reviews complained of ports that suffered from "Apple conversionitis",[14] retaining the Apple's "lousy sound and black-white-green-purple graphics";[15][16] after Garriott's statement, when Dan Bunten asked "Atari and Commodore people in the audience, are you happy with the Apple rewrites?" the audience shouted "No!" Garriott responded, "[otherwise] the Apple version will never get done. From a publisher's point of view that's not money wise".[13]

Others worked differently. Ozark Softscape, for example, wrote M.U.L.E. for the Atari first because it preferred to develop for the most advanced computers, removing or altering features as necessary during porting. Such a policy was not always feasible; Bunten stated that "M.U.L.E. can't be done for an Apple",[12] and that the non-Atari versions of The Seven Cities of Gold were inferior.[17] Compute!'s Gazette wrote in 1986 that when porting from Atari to Commodore the original was usually superior. The latter's games' quality improved when developers began creating new software for it in late 1983, the magazine stated.[18]

In porting arcade games, the terms "arcade perfect" or "arcade accurate" were often used to describe how closely the gameplay, graphics, and other assets on the ported version matched the arcade version. Many arcade ports in the early 1980s were far from arcade perfect as home consoles and computers lacked the sophisticated hardware in arcade games, but games could still approximate the gameplay. Notably, Space Invaders on the Atari VCS became the console's killer app despite its differences,[19] while the later Pac-Man port was notorious for its deviations from the arcade version.[20] Arcade-accurate games became more prevalent starting in the 1990s as home consoles caught up to the power of arcade systems. Notably, the Neo Geo system from SNK, which was introduced as a multi-game arcade system, would also be offered as a home console with the same specifications. This allowed arcade perfect games to be played at home.[10]

A "console port" is a game that was originally made for a console before an identical version is created which can be played on a personal computer. This term has been widely used by the gaming community. The process of porting a game from a console to a PC is often regarded negatively due to the higher levels of performance that computers generally have being underutilized, partially due to console hardware being fixed throughout their run (with games being developed for console specs), while PCs become more powerful as hardware evolves, but also due to ported games sometimes being poorly optimized for PCs, or lazily ported. While broadly similar, architectural differences may exist such as the use of unified memory on a console.

See also

References

  1. ^ Whitten, D.E.; Demaine, P.A.D. (March 1975). "A machine and configuration independent Fortran: Portable Fortran". IEEE Transactions on Software Engineering. SE-1 (1): 111–124. doi:10.1109/TSE.1975.6312825. S2CID 16485156.
  2. ^ "Portability Issues". .. discusses .. portability of .. Fortran
  3. ^ "port, v.2". Oxford English Dictionary (OED Online). Oxford University Press. Retrieved December 21, 2017. Origin: Of multiple origins. Partly a borrowing from French. Partly a borrowing from Latin. Etymons: French porter; Latin portāre. ... 1. trans. To carry, bear, or convey; to bring.
  4. ^ Tanenbaum 1984, p. 3, § 1.1 Languages, Levels, and Virtual Machines describes the terms and their relations.
  5. ^ Tanenbaum 1984, p. 2. Ch. 1 Introduction explains translation and interpretation.
  6. ^ Richards & Whitby-Strevens 1984, p. 124, § 7.1 Introduction explains compiler portability using intermediate code.
  7. ^ Richards & Whitby-Strevens 1984, p. 133, § 7.4 The bootstrapping process and INTCODE explains the role of the INTCODE interpreter.
  8. ^ Richards & Whitby-Strevens 1984, p. 136, § 7.4.3 Example gives an example translation of a BCPL program into INTCODE for the interpreter.
  9. ^ Wolf, Mark J. P. (2008). "Glossary". The Video Game Explosion: A History from PONG to Playstation and Beyond. Bloomsbury Academic. p. 315. ISBN 978-0-313-33868-7.
  10. ^ a b c Grabarczyk, Pawel; Aarseth, Espen (2019), Port or conversion? An ontological framework for classifying game versions | DiGRA Conference 2019
  11. ^ Nicoll, Benjamin (2015). "Bridging the Gap: The Neo Geo, the Media Imaginary, and the Domestication of Arcade Games". Games and Culture. doi:10.1177/1555412015590048. S2CID 147981978.
  12. ^ a b Bunten, Dan (December 1984). "Dispatches / Insights From the Strategy Game Design Front". Computer Gaming World. p. 40. Retrieved 31 October 2013.
  13. ^ a b "The CGW Computer Game Conference". Computer Gaming World (panel discussion). October 1984. p. 30. Retrieved 31 October 2013.
  14. ^ Dunnington, Benn; Brown, Mark R.; Malcolm, Tom (January–February 1987). "64/128 Gallery". Info. pp. 14–21.
  15. ^ Stanton, Jeffrey; Wells, Robert P.; Rochowansky, Sandra; Mellid, Michael, eds. (1984). The Addison-Wesley Book of Atari Software. Addison-Wesley. pp. 12, 21, 44, 126. ISBN 0-201-16454-X.
  16. ^ Bernstein, Harvey (May 1985). "Beyond Castle Wolfenstein". Antic. p. 83. Retrieved 8 January 2015.
  17. ^ Bunten, Dan. "The Game Collection". Ozark Softscape M.U.L.E. Retrieved 2017-10-04.
  18. ^ Yakal, Kathy (June 1986). "The Evolution of Commodore Graphics". Compute!'s Gazette. pp. 34–42. Retrieved 2019-06-18.
  19. ^ Kent, Steven (2001). Ultimate History of Video Games. Three Rivers Press. p. 190. ISBN 0-7615-3643-4.
  20. ^ Kent, Steven (2001). "The Fall". The Ultimate History of Video Games. Three Rivers Press. pp. 237–239. ISBN 978-0-7615-3643-7.

Read other articles:

PausUrbanus VIAwal masa kepausan8 April 1378Akhir masa kepausan15 Oktober 1389PendahuluGregorius XIPenerusBonifasius IXInformasi pribadiNama lahirBartolomeo PrignanoLahir± 1318Itri, Latina, Kerajaan NapoliWafat15 Oktober 1389Roma, Negara Gereja Paus Urbanus VI (lahir dengan nama Bartolomeo Prignano; Napoli, sekitar 1318–Roma, 15 Oktober 1389) adalah Paus dari 8 April 1378 sampai 15 Oktober 1389. Biarawan taat dan kasuis terpelajar, dia menjadi Uskup Agung Bari pada 1377, dan pada kematian ...

 

 

Air warfare branch of Libya's armed forces For the air force of Libya's National Transitional Council, see Free Libyan Air Force. Libyan Air Forceالقوات الجوية الليبيةLibyan Air Force emblemActive1962; 62 years ago (1962)Country LibyaAllegianceGovernment of National UnityHouse of Representatives FormerlyGovernment of National AccordBranchLibyan Armed ForcesTypeAir forceRoleAerial warfareSize4,500 personnelHeadquartersTripoli (GNU-backed)Tobruk (HoR-ba...

 

 

Association football club in Svendborg, Denmark Football clubSfB-Oure FAFull nameSvendborg forenede Boldklubber-Oure Fodbold AkademiFounded25 January 2018; 6 years ago (2018-01-25)[1]GroundHøje Bøge, SvendborgCapacity7,000ChairmanJesper JensenManagerThune HolmLeague3rd Division2022–233rd Division, 10th of 12WebsiteClub website Home colours Away colours SfB-Oure FA (Danish pronunciation: [ˈesefpe̝ˀˌoːɐˌefɛˀ]) is a Danish professional association f...

Gurun Libya Gurun Libya (Arab: الصحراء الليبية) merupakan sebuah gurun yang terletak di bagian utara dan sebagian bagian timur Gurun Sahara. Gurun ini memiliki luas wilayah 1.100.000 km², gurun ini membentang 1.100 km dari timur ke barat dan 1.000 km dari utara ke selatan. Lihat Pula Gurun Timur Pranala luar Wikimedia Commons memiliki media mengenai Libyan Desert. The complete text and photos of the discoveries of Ahmed Pasha Hassanein in the Libyan Desert, Natio...

 

 

Chromium(III) acetate hydroxide Names IUPAC name Chromium(III) acetate hydroxide Other names Acetic acid of the chromium salt,Chromium(III)acetatehydroxide,Cr24%,Chromic acetate hydroxide,Chromium - acetic acid (3:7) dihydrate,Chromium Acetic Acid,Ccris 6345, Identifiers CAS Number 263752-31-4 ECHA InfoCard 100.049.480 CompTox Dashboard (EPA) DTXSID6044935 Properties Chemical formula C24H48Cr8O36 Molar mass 1328.581 g·mol−1 Appearance violet solid Density 1.484 g/cm3 Solubilit...

 

 

Wine making in Macedonia North Macedonia North Macedonia produces wine on some 22,400 hectares (55,000 acres) of vineyards,[1] and the production was 108,100 tonnes in 2008.[2] There are also some additional 30,000 hectares (74,000 acres) of vineyards dedicated to table grapes. Red wine dominates the Macedonian wine production, with around 80 per cent.[citation needed] In contrast, within the European Union, Macedonia is a protected geographical indication (PGI) for wi...

Historic territory in present-day US Arizona Territory in the American Civil War redirects here. For the southern portion of New Mexico Territory controlled or claimed by the Confederacy, see Confederate Arizona. For events in the new Union territory formed in 1863 from the western half of New Mexico Territory, see Arizona Territory § American Civil War. Union states in the American Civil War California Connecticut Delaware Illinois Indiana Iowa Kansas Maine Maryland Massachusetts Michi...

 

 

Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus. Certaines informations figurant dans cet article ou cette section devraient être mieux reliées aux sources mentionnées dans les sections « Bibliographie », « Sources » ou « Liens externes » (août 2014). Vous pouvez améliorer la vérifiabilité en associant ces informations à des références à l'aide d'appels de notes. Pour les articles homonymes, voir Alexandre Farnèse...

 

 

J. J. BerzeliusLahir(1779-08-20)20 Agustus 1779Väversunda, Östergötland, SwediaMeninggal7 Agustus 1848 (umur 68)Stockholm, SwediaTempat tinggalSwedenKebangsaanSwediaAlmamaterUppsala UniversityDikenal atasHukum proporsi konstan Notasi kimiaSilikonSeleniumThoriumCeriumKarier ilmiahBidangkimiawanInstitusiKarolinska InstitutePembimbing doktoralJohann AfzeliusMahasiswa doktoralJames Finlay Weir JohnstonHeinrich Rose Jöns Jakob Berzelius (20 Agustus 1779 – 7 Agustus 1848) adala...

この項目には、一部のコンピュータや閲覧ソフトで表示できない文字が含まれています(詳細)。 数字の大字(だいじ)は、漢数字の一種。通常用いる単純な字形の漢数字(小字)の代わりに同じ音の別の漢字を用いるものである。 概要 壱万円日本銀行券(「壱」が大字) 弐千円日本銀行券(「弐」が大字) 漢数字には「一」「二」「三」と続く小字と、「壱」「�...

 

 

Untuk tempat lain yang bernama sama, lihat Ngantru (disambiguasi). NgantruKecamatanPeta lokasi Kecamatan NgantruNegara IndonesiaProvinsiJawa TimurKabupatenTulungagungPemerintahan • Camat-Populasi • Total- jiwaKode Kemendagri35.04.04 Kode BPS3504140 Luas- km²Desa/kelurahan13 desa Ngantru adalah sebuah kecamatan di Kabupaten Tulungagung, Jawa Timur, Indonesia. Ngantru terletak di ujung utara kota Tulungagung, dan berbatasan langsung dengan Kabupaten Kediri di sebel...

 

 

Peta dunia karya Guillaume Brouscon, 1543 Peta Dieppe adalah serangkaian peta dunia yang dibuat di Dieppe, Prancis, pada 1540an, 1550an, dan 1960an. Peta-peta tersebut adalah peta-peta buatan tangan besar, yang ditujukan kepada para patron ningrat dan kaya, termasuk Henry II dari Prancis dan Henry VIII dari Inggris. Mazhab kartografer Dieppe meliputi Pierre Desceliers, Johne Rotz, Guillaume Le Testu, Guillaume Brouscon dan Nicolas Desliens. Pranala luar Cowley, Des. (Detail of Harlian Map) Eu...

SintraTownPalacio Nacional de Sintra and center of the town. BenderaLambang kebesaranCountry PortugalMunicipalitySintra Municipality Cultural Landscape of SintraSitus Warisan Dunia UNESCOKriteriaCultural: ii, iv, vNomor identifikasi723Pengukuhan1995 (19th) Sintra merupakan kota yang terletak di sebelah barat Portugal. Penduduknya berjumlah 409.482 jiwa (2005). Sisa-sisa pendudukan manusia yang paling awal ditemukan di Penha Verde: peninggalan-peninggalan ini memberi kesaksian tentan...

 

 

Western European currency from the 13th-20th centuries This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Guilder – news · newspapers · books · scholar · JSTOR (December 2009) (Learn how and when to remove this message) Florence gulden (1341) Guilder is the English translation of the Dutch and German gulden, or...

 

 

Public school in Lenox, Massachusetts, United States Lenox Memorial High SchoolAddress197 East StreetLenox, (Berkshire County), Massachusetts 01240United StatesCoordinates42°21′07.49″N 73°15′31.86″W / 42.3520806°N 73.2588500°W / 42.3520806; -73.2588500InformationTypePublicCoeducationalOpen enrollment[1]Established1803School districtLenox Public SchoolsDeanBrian CogswellPrincipalJeremiah AmesTeaching staff50Grades6–12Enrollment474 (2017–18)[3...

CantukDesaKantor Desa CantukPeta lokasi Desa CantukNegara IndonesiaProvinsiJawa TimurKabupatenBanyuwangiKecamatanSingojuruhKode pos68464Kode Kemendagri35.10.12.2007 Luas3.14 km²Jumlah penduduk4,227 jiwaKepadatan1,346.18 jiwa/km² Cantuk adalah sebuah nama desa di wilayah Singojuruh, Kabupaten Banyuwangi, Provinsi Jawa Timur, Indonesia. Nama desa ini berasal dari kata caruk-caruk kepetuk. Dalam bahasa Jawa, nama ini berarti digaruk-garuk dan ketemu. Cantuk merupakan salah satu perkampung...

 

 

Вооружённые силы Словениисловен. Slovenska vojska Эмблема вооружённых сил СловенииФлаг вооружённых сил Словении Основание с 1991 (как Территориальная оборона Словении)с 1994 Подразделения Сухопутные войска СловенииВоенно-морские силы СловенииВоенно-воздушные силы Словении Шта�...

 

 

Czech politician This article includes a list of references, related reading, or external links, but its sources remain unclear because it lacks inline citations. Please help improve this article by introducing more precise citations. (April 2009) (Learn how and when to remove this message) Václav FreslPersonal detailsBorn(1868-10-14)October 14, 1868Died(1915-09-23)September 23, 1915NationalityCzechPolitical partyCzech National Social Party Václav Fresl (14 October 1868, in Pelhřimov, King...

Pour les articles homonymes, voir KBS (homonymie). Korean Broadcasting System Logo de KBS Création 16 février 1927 Fondateurs Corée du Sud Personnages clés Kim Eui-cheol (président) Forme juridique Entreprise publique Siège social Yeouido, Yeongdeungpo-gu, Séoul Corée du Sud Président Park min (d) Actionnaires Gouvernement de la Corée du Sud Activité Audiovisuel Produits Télévision, radio, internet, multimédia Filiales KBS N (en)KBS Media (en)Monster Union (en) Site web ww...

 

 

This is an alphabetical list of bishops and archbishops of the Anglican Communion, with links to articles about their dioceses or provinces where possible. As of 2020 the Anglican Communion (as recognised by the Anglican Consultative Council) consists of 865 dioceses and 18 additional Ordinary jurisdictions (see list below) giving a total of 883 bishops; this total includes 77 archbishops (or equivalents, such as 'Presiding Bishop'), of whom 41 have the status of 'primate', and membership of...