CN1299482A - 混和计算机程序设计环境 - Google Patents
混和计算机程序设计环境 Download PDFInfo
- Publication number
- CN1299482A CN1299482A CN99804945A CN99804945A CN1299482A CN 1299482 A CN1299482 A CN 1299482A CN 99804945 A CN99804945 A CN 99804945A CN 99804945 A CN99804945 A CN 99804945A CN 1299482 A CN1299482 A CN 1299482A
- Authority
- CN
- China
- Prior art keywords
- source code
- assembly language
- instruction
- code file
- language
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/423—Preprocessors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
- Debugging And Monitoring (AREA)
Abstract
一种通过提供高度发展的混和程序设计环境来简化汇编语言程序设计的系统包括:一个用于分析包含至少一种高级指令的输入混和源代码文件的模块;一个用于从相应的高级指令中定义在混和源代码文件中的至少一种汇编语言指令的函数库;一个根据库将高级指令翻译成机器语言指令的模块;和一个将翻译好的机器语言指令输出到目标文件的模块。
Description
发明背景和领域
本发明涉及计算机程序设计语言环境,尤其它涉及用于简化编写和调试汇编语言程序的系统。
汇编语言程序设计对于编程过程中的代码编写和调试阶段均是一种尤其困难的任务。高级语言,如C++,能被用于编写根据与人类语言密切相关的抽象符号描述算法的程序。而另一方面,汇编语言本质上是机器的,它仅仅根据简单的微处理器指令描述算法。因此,汇编语言程序设计与用高级语言编写的程序相比通常冗长而且难于理解。
对于汇编语言程序设计,调试过程尤其困难。调试过程是测试计算机程序的错误(故障),这些错误导致程序给出与设计技术要求不相符的结果。错误可能源于作为编程基础的下面的算法的缺陷,或是源于算法的错误的执行。当出现这样的错误结果时,软件工程师们要找到包含这些错误的计算机程序段,并重编写。然后,工程师们再编译程序并测试。调试过程反复进行直到这些错误从程序中被除去。
对于汇编语言而言,调试过程相对困难,这是因为下面的算法被大量的特定的微处理器的机器指令所遮蔽,然而在高级语言中下面的算法易于分辨。而且,目前的汇编语言程序设计环境不能提供通常能在高级程序设计环境中找到的很多功能。例如,高级语言和程序设计环境具有许多功能用于存储于硬盘上的文件的处理。当程序被调试时,这些文件能用于存储程序得到的测试输出结果。
汇编语言程序的调试过程的另一个问题是每一种汇编语言都有其自己的一套调试程序,要求软件工程师们在一种新的微处理器被开发时,学习应用一种新的调试程序。
仿真器是检测汇编程序执行情况的最精确的工具,它是一种特殊的硬件设备,它与使用汇编语言的微处理器直接相连,以持续监测微处理器的输入输出状态。这种设备很昂贵,在微处理器开发的初级阶段不总是可得到,因而耽搁软件的开发。
欧洲专利申请90114711说明了一种特殊的开发计算机,它能用于将高级语言编写的控制程序翻译成机器语言,并将机器语言控制程序传递给开发微处理器。尽管这确实在一定程度上简化了开发过程,但是它并未提供在单一程序中既包括高级语言又包括汇编语言的程序的编写、测试和调试。另外,这种开发方式要求特殊的硬件和一个用于接口的额外的开发计算机。
一种更为有效的系统应要求较少的电子硬件。这种硬件一般在通用个人计算机上实现,以便公司能允许他们的员工使用和利用现有的个人计算机技术编写和调试汇编语言程序。一种更有效的系统也应让在有竞争力的高级程序设计语言市场上的工具能用在汇编语言程序设计中。
因此需求这样一种系统,它能将编写和调试的高级语言程序的轻松自如带入到汇编语言程序设计中。
发明概述
本发明的目的是提供一种高度发展的汇编语言程序设计环境,它能简化汇编语言程序的编写和调试。该目的是通过提供一种混和程序设计环境实现的,该环境能够编辑既包含高级程序设计语言指令又包含汇编语言程序设计指令的程序。
根据本发明的教导,这里提供了一种简化汇编语言程序设计的系统,它由一种高度发达的混和程序设计环境所提供,该程序设计环境包含:一个模块,它用于分析包含至少一种高级指令的输入混和源代码文件;一个函数库,用于从相应的高级指令中,定义混和源代码文件中的至少一种汇编指令;一个根据该库将高级指令翻译成机器语言指令的模块;和一个将翻译好的机器语言指令输出到目标文件中的模块。
根据本发明的教导,这里也提供了一种方法,它能够处理包含任意数量高级和汇编语言指令的混和源代码文件,它包括分析含有至少一种高级指令的输入混和源代码文件,将混和源代码文件中的汇编语言指令转换成高级语言指令,将高级语言指令翻译成机器指令,并编译翻译后的机器语言指令到目标文件中。
根据本发明的教导,这里也提供了一种方法,用于编写和调试汇编语言程序,包括编写含有至少一种高级指令的源代码文件;调试含有至少一种高级指令的源代码文件;用汇编语言指令替换源代码文件中的高级指令;并调试产生的包含高级和汇编语言指令的混和源代码文件。
附图简述
本文中的发明仅仅通过实例的方式来参考了相应的附图说明,其中:
图1是说明本发明提供的汇编语言程序设计过程中的步骤的方框图。
发明简述
本发明中,程序员首先使用高级编译器和程序设计环境编译和调试用高级语言编写的程序。程序员调试高级程序代码直到程序员满意生成的高级代码。程序员逐渐将高级指令替换成汇编语言指令,并调试结果,直到所有的高级语言指令被汇编语言指令所替代。
本发明中的混和程序设计环境是一种由函数库提供的高级语言编译器,函数库模拟汇编语言指令。这些函数被写成编译器的标准高级语言指令组,因此能与标准高级语言指令同时使用。本发明提供的特定函数库中的函数仿真汇编语言指令的执行。通过将库增加到能够被编译器识别的库列表中,库即能和其他库一起被编译器利用,而不需要特定的硬件。
计算机程序员通过将由高级程序设计语言指令编写的程序输出到计算机文件中而开始程序设计过程。此文件被称作源代码。然后,程序员应用标准高级程序设计语言编译器编译源代码。校正完错误后,程序员再次编译源代码。这一过程反复进行直到得到编译好的文件。
这时,程序员使用标准连接器连接编译好的文件,产生可执行程序。程序员测试这一程序以便与设计要求一致。通过修改源代码程序员纠正背离设计要求任何偏差,然后重复编译和连接步骤。程序员重复该过程直到程序员满意源代码能正确地实现设计要求。
程序员用汇编语言指令替换某些高级语言指令,得到既包含高级语言又包括汇编语言代码的混和源代码。通过使用特殊的函数库,程序员可以编译和连接混和源代码。此函数库允许编译器编译汇编语言指令和高级指令。在测试了结果可执行程序后,程序员对引入到混和源代码中的汇编语言指令进行必要的修改,并重复编译和连接步骤。
用此种方法,程序员逐渐将所有的高级语言指令替换成汇编语言指令。
此过程的最后步骤中,程序员针对当时的微处理器通过使用当时标准汇编器汇编和调试汇编语言程序。
最优实施方案说明
本发明是一种混和程序设计环境,它让程序员能够编写既包含高级语言又包含汇编语言指令的程序。
根据本发明,混和程序设计环境的原理和执行可以通过参考附图和相应的说明来更好地理解。
现在,参考附图,图1示出本发明使用在高级和汇编语言混和程序设计过程中。
块10-40代表现有技术。它们表示传统的高级计算机语言程序设计过程,其中程序员编写高级源代码程序,并使用传统的高级语言编译器和程序设计环境来编译和调试源代码,得到调试后的高级源代码程序。
块10代表程序员用高级程序设计语言(如C和C++)编写的程序,它用于实现所期望的程序下面的算法。该程序被称为源代码。
块20代表编译器和程序设计环境,程序员用它编译和调试块10代表的高级源代码程序。它可以是标准编译器和程序设计环境,或者是本发明提供的编译器和程序设计环境。在任何一种情形下,编译器和程序设计环境可以是用在标准个人计算机上进行软件开发的普通软件工具。
编译器包含工业标准函数库,和其他由程序员购买或定义的特殊库。例如,一种特殊库可能包括用于程序设计文字处理软件的函数。这种库将包括能实现在一页的各个方向上显示字符和文字,或在文件中查找文字,或更正文件中的文字拼写的函数。
编译器是一种程序,能一行一行的读取源代码文件,将每条指令翻译成汇编语言指令。然后,编译器将这些汇编语言指令放到一个称作目标文件的文件中。编译器产生的汇编语言指令要与开发个人计算机中的微处理器相匹配。
显然,连接器,程序设计环境的另一部分,被用于从编译器产生的目标文件中得到可执行程序。编译和连接过程的结果即是可执行程序。
块30代表高级调试过程。该过程包括:测试在块20编译过程中编译得到的可执行程序和将结果与程序员想要的结果相比较。如果结果与程序员想要的结果不相符,程序员将在源代码中查找对这种情况负责的高级指令,并修改它。
为了找到负责这一非期望情况的高级指令,程序员利用普通高级调试工具。一种这样的工具是在程序中设置断点。在这些断点处执行停止,让程序员检查程序中用到的变量的值。另一种这样的工具是程序执行中,当变量被置为由程序员设定的特定值时,触发断点。另一种调试工具是能使程序员逐条指令地执行程序,允许程序员在程序进行中同时检测变量值和执行指令流。
然后,程序员再次编译源代码。程序员重复这一调试过程直到程序员满意结果源代码。
块40表示调试后的高级程序设计语言代码,它是块30表示的高级调试过程的结果。这是标准高级语言程序设计过程停止的地方。
块50表示程序员开始将高级程序设计语言指令替换成汇编语言指令的过程。结果是混和源代码文件,包括汇编和高级语言指令。
决60表示本发明,它是一种标准的高级程序设计语言编译器,带有函数库,这些函数根据编译器编译的高级程序设计语言定义汇编语言指令。该库使编译器能够编译既包括高级语言又包括汇编语言指令的混和源代码文件。程序员使用编译器编译来自于混和程序代码生成可执行程序,该混和程序代码包括高级和汇编语言指令,该混合程序代码来自块50代表的过程。
块70表示块50代表的过程得到的混和代码的调试过程。如块20代表的高级调试过程,程序员把在块60处使用混和程序设计环境准备好的可执行程序的结果与程序员期望的结果相比较,在块50处对源代码进行适当的纠正,然后,再次编译源代码。在混和代码调试时,程序员利用高级程序设计环境中可用的多种调试工具。
这一过程重复进行直到从混和源代码得到的可执行程序得到与程序员期望一致的结果。
然后,程序员返回到块50表示的过程,把其他高级程序设计指令代换成汇编语言程序设计指令,并重复块60和块70代表的过程,直到所有的高级代码均被用汇编语言代码所替换,并且仅包含汇编语言指令的结果源代码文件被彻底地调试。
块80表示汇编语言汇编器程序,块90表示汇编语言调试器,块80和块90代表该过程的最后一步,其中程序员利用当前的微处理器的标准编译器和调试工具汇编和调试汇编语言程序。
应当了解以上的说明仅期望于作为实例,并且在本发明的实质和作用范围内还可能有许多其他的实施方案。
Claims (3)
1.一种通过提供高度发展的混和程序设计环境来简化汇编语言程序设计的系统,包括:
(a)一个用于分析包含至少一种高级指令的源代码文件的
模块;
(b)一个根据相应的高级指令定义混和源代码文件中的至
少一种汇编语言指令的函数库;
(c)一个根据该函数库将高级指令翻译成机器语言指令的
模块;和
(d)一个用于将翻译好的机器语言指令输出到目标文件中的模
块。
2.一种用于处理包括任意数量高级和汇编语言指令的混和源代码文件的方法,包括以下步骤:
(a)分析包括至少一种高级指令的混和源代码文件;
(b)将混和源代码文件中的汇编语言指令转换成高级语言指
令;
(c)将高级指令翻译成机器语言指令;
(d)将翻译后的机器语言指令编译成目标文件。
3.一种编写和调试汇编语言程序的方法应包括:
(a)根据多个高级语言指令中的每一个定义多个汇编语言指令
中的每一个;
(b)编写包含该多个高级指令中至少一个的源代码文件;
(c)调试该源代码文件直到该多个高级指令中的该至少一个正
常运行;
(d)用至少一个汇编语言指令替代源代码文件中的该多个高级
指令中的该至少一个指令;
(e)调试包含高级和生成的汇编语言指令的混和源代码文件。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/210,542 | 1998-12-14 | ||
US09/210,542 US6314557B1 (en) | 1998-12-14 | 1998-12-14 | Hybrid computer programming environment |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1299482A true CN1299482A (zh) | 2001-06-13 |
Family
ID=22783309
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN99804945A Pending CN1299482A (zh) | 1998-12-14 | 1999-12-14 | 混和计算机程序设计环境 |
Country Status (6)
Country | Link |
---|---|
US (1) | US6314557B1 (zh) |
EP (1) | EP1064598A2 (zh) |
JP (1) | JP2002532804A (zh) |
KR (1) | KR20010078692A (zh) |
CN (1) | CN1299482A (zh) |
WO (1) | WO2000036500A2 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101470430B (zh) * | 2003-02-13 | 2012-07-04 | 瑞尼斯豪公司 | 控制机床操纵的方法和控制机床的装置 |
CN105556504A (zh) * | 2013-06-24 | 2016-05-04 | 惠普发展公司,有限责任合伙企业 | 从物理流生成逻辑表示 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6625808B1 (en) * | 1999-12-10 | 2003-09-23 | Microsoft Corporation | Method and apparatus for facilitating memory management in a program comprised of heterogeneous components |
US6668369B1 (en) * | 1999-12-29 | 2003-12-23 | International Business Machines Corporation | Software debugging tool for displaying dynamically written software code |
US6968548B1 (en) * | 2000-12-01 | 2005-11-22 | Unisys Corporation | Method and apparatus for sharing data structures between assembly language programs and high-level language programs |
US20020083421A1 (en) * | 2000-12-22 | 2002-06-27 | Hitachi America, Ltd. | Assembly language code compilation for an instruction-set architecture containing new instructions using the prior assembler |
US7203925B1 (en) * | 2001-09-14 | 2007-04-10 | Emc Corporation | Graphical compiler |
US7216338B2 (en) * | 2002-02-20 | 2007-05-08 | Microsoft Corporation | Conformance execution of non-deterministic specifications for components |
JP2004013190A (ja) * | 2002-06-03 | 2004-01-15 | Matsushita Electric Ind Co Ltd | ソフトウエア開発環境、シミュレータ及び記録媒体 |
WO2004036421A2 (en) * | 2002-10-21 | 2004-04-29 | Eitan Glotman | System and method for a mixed-language compiler |
US7237233B2 (en) * | 2002-12-19 | 2007-06-26 | Texas Instruments Incorporated | Assembly directives for the support of multi-language programming |
US20050193378A1 (en) * | 2004-03-01 | 2005-09-01 | Breault Richard E. | System and method for building an executable program with a low probability of failure on demand |
US20070271553A1 (en) * | 2006-05-22 | 2007-11-22 | Micro Focus (Us), Inc. | Method and system for translating assembler code to a target language |
WO2009065168A1 (en) * | 2007-11-20 | 2009-05-28 | National Ict Australia Limited | Multi language software code analysis |
JP6917169B2 (ja) * | 2017-03-30 | 2021-08-11 | 東芝産業機器システム株式会社 | コンピュータプログラム及びコンピュータシステム |
CN113761171A (zh) * | 2021-01-26 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 一种辅助编程方法、装置、电子设备及存储介质 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0362202A (ja) | 1989-07-31 | 1991-03-18 | Japan Electron Control Syst Co Ltd | 制御プログラム開発装置 |
US5132972A (en) * | 1989-11-29 | 1992-07-21 | Honeywell Bull Inc. | Assembly language programming potential error detection scheme sensing apparent inconsistency with a previous operation |
US5179702A (en) * | 1989-12-29 | 1993-01-12 | Supercomputer Systems Limited Partnership | System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling |
US5175856A (en) * | 1990-06-11 | 1992-12-29 | Supercomputer Systems Limited Partnership | Computer with integrated hierarchical representation (ihr) of program wherein ihr file is available for debugging and optimizing during target execution |
US5430862A (en) | 1990-06-29 | 1995-07-04 | Bull Hn Information Systems Inc. | Emulation of CISC instructions by RISC instructions using two pipelined stages for overlapped CISC decoding and RISC execution |
JPH04229337A (ja) | 1990-12-27 | 1992-08-18 | Hitachi Ltd | エミュレータ |
US5261055A (en) | 1992-02-19 | 1993-11-09 | Milsys, Ltd. | Externally updatable ROM (EUROM) |
JP3210466B2 (ja) | 1993-02-25 | 2001-09-17 | 株式会社リコー | Cpuコア、該cpuコアを有するasic、及び該asicを備えたエミュレーションシステム |
US5404485A (en) | 1993-03-08 | 1995-04-04 | M-Systems Flash Disk Pioneers Ltd. | Flash file system |
JPH0721033A (ja) * | 1993-07-07 | 1995-01-24 | Nec Corp | 言語処理装置及びその方法 |
US5392036A (en) | 1993-10-28 | 1995-02-21 | Mitan Software International (1989) Ltd. | Efficient optimal data recopression method and apparatus |
US5933642A (en) * | 1995-04-17 | 1999-08-03 | Ricoh Corporation | Compiling system and method for reconfigurable computing |
US5740469A (en) * | 1995-04-24 | 1998-04-14 | Motorola Inc. | Apparatus for dynamically reading/writing multiple object file formats through use of object code readers/writers interfacing with generalized object file format interface and applications programmers' interface |
US5860008A (en) * | 1996-02-02 | 1999-01-12 | Apple Computer, Inc. | Method and apparatus for decompiling a compiled interpretive code |
US5805893A (en) * | 1996-03-01 | 1998-09-08 | Electronic Data Systems Corporation | Assembly language program converter |
US5668989A (en) * | 1996-09-18 | 1997-09-16 | Mao; Decao | Two-digit hybrid radix year numbers for year 2000 and beyond |
US6021275A (en) * | 1996-08-05 | 2000-02-01 | General Magic, Inc. | Object code structure and method for translation of architecture independent program implementations |
US6233545B1 (en) * | 1997-05-01 | 2001-05-15 | William E. Datig | Universal machine translator of arbitrary languages utilizing epistemic moments |
US6083278A (en) * | 1997-05-28 | 2000-07-04 | Texas Instruments Incorporated | System and method for displaying and editing assembly language source codes |
JP3424520B2 (ja) * | 1997-08-29 | 2003-07-07 | 松下電器産業株式会社 | プログラム変換装置とデバッグ装置 |
US6014513A (en) * | 1997-12-23 | 2000-01-11 | University Of Washington | Discovering code and data in a binary executable program |
US6173441B1 (en) * | 1998-10-16 | 2001-01-09 | Peter A. Klein | Method and system for compiling source code containing natural language instructions |
-
1998
- 1998-12-14 US US09/210,542 patent/US6314557B1/en not_active Expired - Fee Related
-
1999
- 1999-12-14 CN CN99804945A patent/CN1299482A/zh active Pending
- 1999-12-14 WO PCT/EP1999/009929 patent/WO2000036500A2/en not_active Application Discontinuation
- 1999-12-14 JP JP2000588679A patent/JP2002532804A/ja active Pending
- 1999-12-14 EP EP99968798A patent/EP1064598A2/en not_active Withdrawn
- 1999-12-14 KR KR1020007008906A patent/KR20010078692A/ko not_active Application Discontinuation
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101470430B (zh) * | 2003-02-13 | 2012-07-04 | 瑞尼斯豪公司 | 控制机床操纵的方法和控制机床的装置 |
CN105556504A (zh) * | 2013-06-24 | 2016-05-04 | 惠普发展公司,有限责任合伙企业 | 从物理流生成逻辑表示 |
Also Published As
Publication number | Publication date |
---|---|
KR20010078692A (ko) | 2001-08-21 |
WO2000036500A2 (en) | 2000-06-22 |
EP1064598A2 (en) | 2001-01-03 |
JP2002532804A (ja) | 2002-10-02 |
WO2000036500A3 (en) | 2000-11-09 |
US6314557B1 (en) | 2001-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Leroy et al. | CompCert-a formally verified optimizing compiler | |
Kästner et al. | CompCert: Practical experience on integrating and qualifying a formally verified optimizing compiler | |
US7478366B2 (en) | Debugger and method for debugging computer programs across multiple programming languages | |
CN1299482A (zh) | 混和计算机程序设计环境 | |
US8898647B2 (en) | Method and apparatus for test coverage analysis | |
US6874140B1 (en) | Debug annotations | |
EP0703532B1 (en) | Embedded program flow information for object code manipulation | |
Aversano et al. | Handling preprocessor-conditioned declarations | |
Jaramillo et al. | Comparison checking: An approach to avoid debugging of optimized code | |
CN114490362A (zh) | 一种基于动态传递参数的ate装置和传输方法 | |
Ghosh et al. | Effective spectrum-based technique for software fault finding | |
Chang et al. | Analysis of low-level code using cooperating decompilers | |
Pollock et al. | Introducing natural language program analysis | |
Gabor et al. | Software-fault injection in source code with Clang | |
Marceau et al. | A dataflow language for scriptable debugging | |
Ekman et al. | Dynamic patching of embedded software | |
WO1992003782A1 (en) | Parsing program data streams | |
Guo et al. | EATBit: Effective automated test for binary translation with high code coverage | |
Elms | Debugging optimised code using function interpretation | |
Ma et al. | Panda: A Concurrent Scheduler for Compiler-Based Tools | |
Brunner et al. | Bug path reduction strategies for symbolic execution | |
Chen | Delta-debugging on traces | |
Duncan et al. | Mapping Exceptions to High-Level Source Code on a Heterogeneous Architecture | |
Akers | Using build process intervention to accommodate dynamic instrumentation of complex systems | |
KR0168929B1 (ko) | 칠 전위처리기의 전위처리 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |