月经提前十几天是什么原因| 随心所欲的欲什么意思| 月经不来是什么原因| 7.14号是什么节日| 孩子记忆力差吃什么好| 虚伪是什么意思| 耐药是什么意思| 一清二白是什么意思| 喝水都会胖是什么原因| 处女座后面是什么星座| 肖战是什么星座| 内蒙古简称什么| 害羞的近义词是什么| 脾虚湿气重吃什么好| 取决于你是什么意思| 大牙什么时候换| 一路顺风是什么生肖| 两规是什么意思| 思源名字的寓意是什么| 狰狞是什么意思| 外婆菜是什么| 不让看朋友圈显示什么| 怀孕有什么症状| 六月份适合种什么蔬菜| 夏季吃什么菜最好菜谱| 毛孔大什么原因形成的| 事物是什么意思| 类风湿关节炎不能吃什么食物| 4月16什么星座| 肚子疼是什么原因引起的| 为什么射精是流出来的| 蛀牙是什么样子的| 一个木一个号念什么| 一直放屁是什么原因| 81年属鸡是什么命| 连可以组什么词| 经期吃什么水果好| 辰砂是什么| 奇亚籽有什么功效| 站久了脚后跟疼是什么原因| 莲子和什么搭配最好| 腰椎退行性变是什么病| 邮政什么时候上班| sy什么意思| 桂圆什么时候成熟| 微蛋白高是什么原因| 梦到被猪咬是什么意思| pcm是什么意思| 三点水卖读什么| 超敏c反应蛋白正常说明什么| 333是什么意思| 中二病的意思是什么| 一什么红枣| 黑金刚是什么药| 三险一金是什么| 孤辰是什么意思| 口腔异味吃什么药| 肺结节吃什么药最好| 纳豆是什么东西| 急性呼吸道感染是什么引起的| 上上签什么意思| 少将是什么级别| 什么叫糖化血红蛋白| 蒙氏结节是什么| 为什么兔子的眼睛是红色的| 12388是什么电话| 什么是负离子| 月经黑色的是什么原因| 什么是溃疡| 双肺纹理增重是什么意思| 爱迪生发明什么| 均质是什么意思| 补气血喝什么泡水| 嗓子痛吃什么药好得快| 脂肪疝是什么病| 什么茶降血压效果最好| 吉加页读什么| 区委副书记是什么级别| 屁股又叫什么| 这个季节种什么菜合适| 腰扭伤用什么药最好| 屁多又臭是什么原因| 什么是适度水解奶粉| 冲正是什么意思| 胃幽门螺旋杆菌吃什么药| 梦见捡手机是什么意思| 故的偏旁是什么| 鬼压床是什么原因| 177是什么意思| 雌堕什么意思| 吃什么中药能降血压| 看头发应该挂什么科| 吃汤圆是什么节日| 什么叫做质量| 满五唯一的房子要交什么税| 1990年属马的是什么命| 女性阴部潮湿是什么原因| 腰部凉凉的是什么原因| 几何图形是什么| 侏儒是什么意思| 姓郑的男孩取什么名字好| 感冒可以吃什么| 预科班是什么意思| pcp是什么意思| 总胆固醇高吃什么药| 什么叫平仓| 章鱼的血是什么颜色| 什么是业力| 雌二醇低吃什么补得快| 喝什么中药补肾| 滴虫是什么| 减肥挂什么科| 大黄和芒硝混合外敷有什么作用| 脂肪肝吃什么药治疗| 鸡蛋和什么不能一起吃| 布洛芬有什么副作用| 什么是缓刑意思是什么| 81是什么节日| 新型冠状病毒有什么症状| 地三鲜是什么菜| 飞天是什么意思| 农历5月20日是什么星座| 舌头锯齿状是什么原因| 手指甲上的月牙代表什么| 结婚23年是什么婚| 打是什么意思| 巽是什么意思| 阴道口有点痒用什么药| 不可漂白是什么意思| 塞保妇康为什么会出血| 铁蛋白低是什么意思| 什么自语| 品牌pr是什么意思| 罗汉果泡水有什么好处| 挚肘是什么意思| 猪笼入水是什么意思| 颈动脉斑块是什么意思| 绿五行属什么| 什么动物最安静| 咳嗽喉咙痒吃什么药好得快| 什么时间吃水果最好| 亚急性甲状腺炎吃什么药| 7.13是什么日子| 月半是什么意思| 锡是什么金属| 早上9点半是什么时辰| 世界上最深的湖是什么| 虾仁炒什么好吃又简单| 梦见抓鸟是什么征兆| 什么饮料解酒效果最好| 坐北朝南什么意思| 2.10是什么星座| 鼻子老是出血是什么原因| 昆仑雪菊有什么功效| olay是什么品牌| 气血虚吃什么中成药| 手足口挂什么科| 草莓的花是什么颜色| 吃葡萄有什么好处| 气血不足吃什么补得快| ab型血可以给什么血型输血| 什么不能带上高铁| 命运多舛是什么意思| 黄疸偏高有什么危害| 尾插是什么| 异国他乡的异是什么意思| 什么是手帐| 一件代发是什么意思| 喝酒不能吃什么东西| 血管堵塞吃什么药好| 手指长水泡很痒是什么原因| 扁平疣是什么样子图片| 女生胸疼是什么原因| 剥皮实草是什么意思| 3.23是什么星座| 吃什么水果补肾| 点灯是什么意思| 小肚子发胀是什么原因女性| 酵母提取物是什么| 膀胱炎吃什么药| 22度穿什么衣服合适| 绷不住了是什么意思| 自相矛盾的道理是什么| 胃肠功能紊乱是什么意思| 坚壁清野什么意思| 尿毒症是什么| 扁桃体发炎咳嗽吃什么药效果好| 女生安全期是什么意思| 温碧泉适合什么年龄| 梦见好多鱼是什么意思| 水痘疫苗叫什么| 什么是高脂肪食物| 南京有什么好玩的地方| 测血糖挂号挂什么科| 左旋肉碱什么时候吃效果好| 身上没力气没劲是什么原因| 补钙吃什么最好| 粥样动脉硬化是什么意思| 30年的婚姻是什么婚| 头痛呕吐什么原因| 腰闪了是什么症状| 海藻酸钠是什么| 上火流鼻血吃什么降火| 子宫饱满是什么意思| 什么烧鸡好吃| 什么是繁体字| 柚子是什么季节| 老炮儿是什么意思啊| 老年人睡眠多是什么原因| 小孩疳积有什么症状| 乙肝抗体阳性是什么意思| 皑皑是什么意思| 带刺的玫瑰是什么意思| 什么东西越洗越脏答案| 为什么要活着| 单亲家庭是指什么| 鼠的本命佛是什么佛| 甲亢的早期症状是什么| 儿童口腔溃疡吃什么药| 三姓家奴是什么意思| 一天当中什么时候血压最高| 02年是什么年| 神经性头疼吃什么药好| 1990年什么生肖| 磨玻璃结节是什么意思| 骷髅头是什么牌子| 脚面肿是什么原因| 南笙是什么意思| 相濡以沫什么意思| 牙齿痛吃什么消炎药| 欲情故纵什么意思| 养胃吃什么最好| 梦到迁坟是什么意思| 6月30号是什么星座| 火龙果什么时候成熟| 肚子咕噜响是什么原因| 头皮癣用什么药膏最好| 望尘莫及的及是什么意思| 浅表性胃炎是什么意思| 心脏杂音是什么意思| 结核有什么症状| 菊花是什么季节| 什么是升华| 所以我求求你别让我离开你是什么歌| 250为什么是骂人的话| 月经期间喝酒有什么危害| 全距是什么意思| 牡丹花什么时候开| 南京五行属什么| 霖五行属性是什么| 按摩有什么好处和坏处| 梦见蛇挡路是什么意思| 脚底发热是什么原因| 血糖高可以吃什么| 肝不好吃什么调理| 被是什么偏旁怎么读| 风吹动窗吹动夜声响是什么歌| 西瓜和什么不能一起吃| 大家闺秀是什么生肖| 长时间憋尿会有什么影响| 显著是什么意思| 咕咚是什么| 1月什么星座| crp是什么| 百度Jump to content

俄媒关注荷兰国王亚历山大访华 “熊猫外交”促进中荷友谊

From Wikipedia, the free encyclopedia
(Redirected from Video game port)
百度   卢柯认为,科学研究是兴趣驱动的学习过程,是一种精益求精、追求完美的艺术,理想是科学研究的重要动力。

In software development, porting is the process of adapting software to run in a different context. Often it involves modifying source code so that a program can run on a different platform (i.e. on a different CPU or operating system) or in a different environment (i.e. with a different library or framework). It is also describes adapting a change or feature from one codebase to another – even between different versions of the same software.[1][2]

Software is classified as portable if it can be hosted in a different context with no change to the source code. It might be considered portable if the cost of adapting it to a context is significantly less than the cost of writing it from scratch. The lower the cost of porting relative to the cost to re-write, the more portable it is said to be. The effort depends on several factors including the extent to which the original context differs from the new context, the skill of the programmers, and the portability of the codebase.

Etymology

[edit]

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.

History

[edit]

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.

Porting compilers

[edit]

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

[edit]

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 or primarily made for a console before a version is created which can be played on a personal computer. The process of porting games from console to PC is often regarded more cynically than other types of port due to the more powerful hardware some PCs have even at console launch being underutilized, partially due to console hardware being fixed throughout each generation as newer PCs constantly become even more powerful. While broadly similar today, some architectural differences persist, such as the use of unified memory and smaller OSs on consoles. Other objections arise from user interface differences conventional to consoles, such as gamepads, TFUIs accompanied by narrow FoV, fixed checkpoints, online restricted to official servers or P2P, poor or no modding support, as well as the generally greater reliance among console developers on internal hard coding and defaults instead of external APIs and configurability, all of which may require expensive deep reaching redesign to avoid a "lazy" feeling port to PC.[21]

See also

[edit]
  • Backport – Developing an update for older software based on an update to a newer version
  • Console emulator – Program that reproduces video game console's behavior
  • Cross-compiling – Cross-platform machine-code compiler
  • Cross-platform software – Computer software installed on multiple computing platforms
  • Emulator – System allowing a device to imitate another
  • Language binding – Software library that allows using another library coded in another programming language
  • List of system quality attributes – Non-functional requirements for system evaluation
  • Poshlib – Software framework used in cross-platform software development
  • Program transformation – Automated generation of a computer program
  • Software portability – Ability of a program to run on different platforms with little alteration
  • Source port – Altering a game engine's source code to allow it to run on other other systems
  • Source-to-source compiler – Translator of computer source code
  • Write once, compile anywhere

References

[edit]
  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 2025-08-05.
  18. ^ Yakal, Kathy (June 1986). "The Evolution of Commodore Graphics". Compute!'s Gazette. pp. 34–42. Retrieved 2025-08-05.
  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.
  21. ^ "Stop making horrible console ports - a guide". PC Gamer. 2013.
干什么 什么的味道 什么是腹式呼吸 血小板低看什么科 化干戈为玉帛是什么意思
蓓蕾是什么意思 右手无名指戴戒指是什么意思 阴囊长白毛是什么原因 知柏地黄丸对男性功能有什么帮助 眼睛干涩吃什么食物好
梦到老公被蛇咬是什么意思 chloe是什么牌子 取环后应该注意什么 查血糖血脂挂什么科 事业编有什么好处
鲜为人知是什么意思 ct平扫能检查出什么 绿茶是什么茶 丝瓜有什么营养 看甲状腺去医院挂什么科
炎性增殖灶是什么意思hcv8jop8ns9r.cn 掌门人是什么意思hcv8jop4ns1r.cn th什么意思hcv9jop1ns0r.cn crp医学上是什么意思hcv8jop9ns3r.cn 焯水是什么意思hcv8jop1ns5r.cn
新生儿屁多是什么原因hcv7jop9ns7r.cn 儿童拖鞋什么材质好hcv9jop5ns9r.cn 孕妇梦见坟墓是什么预兆hcv8jop2ns2r.cn 皮鞋配什么裤子好看hcv7jop6ns3r.cn 梦到人死了是什么意思qingzhougame.com
白佛言是什么意思hcv8jop2ns0r.cn 人为什么要穿衣服gysmod.com 诸葛亮字什么hcv9jop0ns5r.cn 乳房变大是什么原因hcv9jop5ns2r.cn 小处男是什么意思jasonfriends.com
慢性肾炎吃什么药hcv9jop1ns7r.cn 妇女是什么意思hcv8jop6ns3r.cn 一穷二白什么意思hcv9jop5ns3r.cn 9月27是什么星座hcv7jop9ns8r.cn 卷帘大将是干什么的hcv8jop6ns4r.cn
百度