WO2007040419A1 - Software integration (assembly) method - Google Patents

Software integration (assembly) method Download PDF

Info

Publication number
WO2007040419A1
WO2007040419A1 PCT/RU2005/000581 RU2005000581W WO2007040419A1 WO 2007040419 A1 WO2007040419 A1 WO 2007040419A1 RU 2005000581 W RU2005000581 W RU 2005000581W WO 2007040419 A1 WO2007040419 A1 WO 2007040419A1
Authority
WO
WIPO (PCT)
Prior art keywords
module
function
matrix
modules
algorithm
Prior art date
Application number
PCT/RU2005/000581
Other languages
French (fr)
Russian (ru)
Inventor
Georgy Mikhailovich Shagov
Original Assignee
Georgy Mikhailovich Shagov
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Georgy Mikhailovich Shagov filed Critical Georgy Mikhailovich Shagov
Publication of WO2007040419A1 publication Critical patent/WO2007040419A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source

Definitions

  • This invention relates to methods for assembling (assembling) software (software), namely to forming a plurality of software modules in separate files.
  • This code can be called a “black box”.
  • An object of the present invention is to prevent the black box from being assembled and / or restarting the system.
  • the technical result that is achieved by using the claimed invention is to save the developer’s time and to provide the ability to make changes to an already launched system without restarting it.
  • a certain software module generates in binary memory a binary matrix of pointers to the functions of the modules, which collected in the form of separate files, with their subsequent loading into the executable program, so that when a function is called from module N, where K is the number of the function in the module, control is transferred to the function whose address is in the matrix in the Nth row, K- th column, and the module and the corresponding file containing the error are reloaded after making the necessary corrections to the source code of the algorithm, followed by compilation and rebooting of the previous version of the module to a debugged new one, with subsequent testing.
  • the module containing the error is replaced by another module whose corresponding functions are set in such a way that when they are executed, a decision is made about which function of the module (previously or newly assembled) should be executed, or about which script -file performing the corresponding function must be executed by the corresponding script machine (interpreter).
  • FIG. 1 is a block diagram of a computing system according to the present invention.
  • FIG. Figure 2 shows a block diagram of the binding of a software module and its constituent elements to RAM, the file system, and the I / O bus.
  • FIG. Figure 3 shows a classic example of a fragment of a program written in C.
  • FIG. 4 shows a block diagram of a matrix of pointers.
  • FIG. Figure 5 shows a diagram in which an example of an algorithm executed on a certain abstract algorithmic programming language.
  • FIG. Figure 6 shows the block diagram of the "control" module.
  • FIG. 7 is a block diagram of an algorithm for implementing the requirements for the “machine code” of a “software module)).
  • FIG. 9 is a diagram of the process of loading the module with the number M.
  • FIG. 10 is a diagram showing the result of loading the proxy module with number M.
  • FIG. 11 is a block diagram of the loading algorithm by the “managing”) module of the “main” modules.
  • FIG. Figure 12 shows the standard block diagram of compiling the source code of the algorithm into a “software”) module.
  • FIG. 1 is a block diagram of a computing system according to the present invention.
  • a computing system includes a central processing unit (CPU), RAM, I / O buses, and a file system.
  • CPU central processing unit
  • RAM random access memory
  • I / O buses volatile and non-volatile memory
  • file system non-volatile and non-volatile memory
  • FIG. Figure 2 shows a block diagram of the binding of a software module and its constituent elements to RAM, the file system, and the I / O bus.
  • FIG. 3 illustrates the following example.
  • the source code is the text of the program in an algorithmic language; on a computer, the source text is either directly executed by an interpreter - translator capable of simultaneously translating and executing a program written in a high-level algorithmic language, or is preliminarily translated by the compiler into a standard boot code that can be repeatedly executed in a certain computing environment
  • algorithm is the output to the console of the string "Hello world”.
  • Curity in this case is meant by some functionality that implements the “printf” function.
  • An example is the "MSVCRT.DLL” or the "LIBC” library.
  • This modification is carried out using the matrix and codes of the main modules.
  • the matrix can be performed in various ways.
  • the matrix is a two-dimensional data array, the number of rows in which corresponds to the number of “basic” modules, while the number of elements in each row coincides with the number of algorithm functions of the corresponding module.
  • Each matrix element is a pointer to the corresponding function of the corresponding module (see Fig. 4).
  • Algorithm is the source code of the “main” modules.
  • index to function we mean a certain physical object that uniquely identifies the function of the module, so that the transfer of control at a given pointer (address), within the framework of the executing machine, would lead to the execution of this function.
  • this method does not normalize in any way, since it depends on what specific code is executed by which particular machine / processor. For example, if this is machine code (processor instructions), then the address of the function is nothing more than 4 bytes (a pointer to a function in a 32-bit system or 8 bytes of 64-bit) and the transfer of control is nothing more than an assembler command “call ". “Cycle”) is a machine code, the pointers to the functions of which, as in the case of the algorithm, are matrix elements, with the only difference being that there is a black box under these elements, the algorithm of which is immutable. At the same time, “cychnosti”, being nothing more than matrix elements, can be replaced.
  • the source code is executed in the form of an algorithmic programming language.
  • the main requirement for the source code is the availability of a translator (a program that converts text written in one language into text in another language) or a compiler.
  • a compiler is a program that converts text written in an algorithmic language into a program consisting of machine instructions. The compiler creates a complete version of the program in machine language. This translator / compiler has the following requirements:
  • a translator / compiler based on this source code can assemble a “software module)) (according to GOST 19781- 90 software module is a program or functionally complete fragment of a program intended for: storage; Broadcast associations with other software modules; and loading into RAM).
  • machine code in this case, machine codes are understood to mean both the instructions of the processor and the instructions of a virtual machine obtained as a result of translation / compilation, the notion of “index for a function” must be present)).
  • a function pointer refers to a physical object that uniquely identifies the function of a module, so that transferring control to a given pointer (address), within the framework of the executing machine, would lead to the execution of this function.
  • interpreter is a translator capable of simultaneously translating and executing a program written in a high-level algorithmic language for a given programming language.
  • FIG. Figure 5 shows a diagram in which an example of an algorithm performed in a certain abstract algorithmic programming language is considered.
  • the diagram shows a primitive algorithm consisting of two functions, “functionl”, “function2”, and “tunction2” calls “functionl” (line 7).
  • this source code is the base for building some kind of software module.
  • the program module must be a “core” module (described below) •
  • the machine code of the module must be assembled in such a way that a call to the f ⁇ mctionl function made from the fimction2 function should not result in the transfer of control to the function function, and control should passed to the function whose address is currently in the corresponding matrix element. For example, suppose that the number of our module in the system is N, and the number of the functionl function in the module is 1, then the implementation of the token of line 7 is reduced to the fact that control is transferred to the function whose address is in the matrix in the Nth line, 1- ohm column (see diagram in Fig. 7). In this diagram:
  • a solid arrow means that the value of the corresponding pointer (the place of the arrow's exit) contains the address of the corresponding function of the corresponding module, for example, Pointer 1 of the line M contains the address of function 1 of the “main” module M.
  • a dashed line means that when the function of the algorithm is called, the function whose address is in the corresponding matrix pointer will be called. For example, when calling the function “functionl” of module M, a function will be called whose address is in the matrix of pointers in row M, the first column.
  • the method does not regulate exactly how the machine code will be executed in such a way that it (the code) Satisfied this requirement. There are many algorithms for solving this problem, but this issue is not considered in the framework of this method.
  • the “main” module is a “software” module obtained as a result of translation / compilation of the source code of the algorithm (see Fig. 12).
  • the “main” module also contains additional functionality "and data:
  • Proxy-module is nothing more than “Software module” with the same “set” of functions of the “main” module, but the implementation of these functions does not come down to the execution of their functionality, but to delegating the execution of the corresponding function to either the corresponding main module (s), or some other functionality that implements this function.
  • These functions of the “proxy-module” will be called “proxy-functions” (see the diagram in Fig. 8). This means that the “proxy module” must “know” (have a link to the main module) the existence of the “main” module (or a multitude of them, in the general case). It should be noted that the presence of “proxy-modules” is not a mandatory part of the system. Their presence, structure is determined directly by the problem being solved. Their presence is natural and most rational, certain technical requirements are imposed on them: - the functions of the “main” module are implemented, as described above;
  • a solid arrow means that the value of the corresponding pointer (the place starting from the arrow) contains on the diagram the address of the corresponding function of the corresponding module, for example, Pointer 1 of the line M contains the address of function 1 of the “main”) module M.
  • the method is implemented due to the fact that a certain software module generates in binary memory a binary matrix of pointers to the functions of the modules. These modules are assembled as separate files, with their subsequent loading into the executable program, so that when a function is called from module N, where K is the number of the function in the module, control is transferred to the function whose address is in the matrix in the Nth row, Kth column.
  • this module is overloaded after making the necessary corrections to the source code of the algorithm, followed by translation / compilation of the source code.
  • the previous version of the module is rebooted into a debugged new one, followed by testing.
  • This method avoids the restart and / or rebuild phase of the system. This saves time. This is achieved due to the fact that if an error is detected, then it is done:
  • the result of the analysis should be a conclusion about which functions of which module should be changed to achieve a positive result.
  • This operation can be performed by various methods: a. Analysis of the external data of the system, such as: error messages, logs, records in the database, etc. b. Reproduction of a problem in an environment where the “black box” can be started in debug mode. 2. Next, the module containing the error is reloaded. (The system itself does not restart at the same time.) The reboot algorithm matches the boot algorithm shown in the diagram shown in FIG. 11. Schematically, the result of loading the module with the number M is shown in the diagram shown in FIG. 9. At the same time, it can act as the “main” module as itself
  • the “proxy function” algorithm in the “proxy” is implemented in such a way that: (Fig 6.) i. the algorithm checks for the presence of a script file in the "known" file system directory. ii. if it exists, it executes the file using the “script-machine” (interpreter). iii. if there is no file, the corresponding function of the “main” module is performed. d. The file (s) of functions whose algorithm is to be changed are laid out in a predetermined directory of the file system. Thus, when the corresponding proxy function is called, it will execute it using the appropriate script machine if there is a script file, if the file is not found, the corresponding function of the “main model” will be called. In general, the whole “function” algorithm will completely depends on the specific task, and in general it is impossible to determine which algorithm will be used. 3. After the module is rebooted and the functionality of the necessary nodes is retested.

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)
  • Debugging And Monitoring (AREA)

Abstract

The invention relates to software integration (assembly) methods. The inventive method consists in forming a binary matrix of pointers to function of modules in a main memory by a defined program module, in assembling said modules in the form of individual files in such a way that, when a function is called from a module N, wherein K is the function serial number in the module, the control is transmitted to the function whose address is stored in the matrix in the N-th line and K-th column. In the case when, during the use of a debugger of another error detection system, it is discovered that the module and the file corresponding thereto contain an error, the inventive method consists, after making required corrections in the algorithm source-code, in reloading said module, in subsequently translating/compiling said source code, in reloading the previous module version into a new definitive version and in testing it. The use of said invention enables a design engineer to save time and makes it possible to introduce changes into an already started system without rerunning it.

Description

СПОСОБ КОМПОНОВКИ (СБОРКИ) ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ METHOD FOR ASSEMBLY (ASSEMBLY) OF THE SOFTWARE
Область техники Данное изобретение относится к способам компоновки (сборки) программного обеспечения (ПО), а именно к формированию совокупности программных модулей в виде отдельных файлов.FIELD OF THE INVENTION This invention relates to methods for assembling (assembling) software (software), namely to forming a plurality of software modules in separate files.
При использовании данного метода у разработчиков появляется возможность заменить функциональность любого элемента матрицы без пересборки и/или перезапуска системы.When using this method, developers have the opportunity to replace the functionality of any matrix element without rebuilding and / or restarting the system.
Предшествующий уровень техникиState of the art
Из уровня техники на данный момент известны два способа сборки ПО: • Статическая сборкаFrom the prior art at the moment two methods of software assembly are known: • Static assembly
• Динамическая сборка (или динамическая компоновка),• Dynamic assembly (or dynamic layout),
(т.е. метод подключения к исполняемой программе стандартных функций и/или данных в момент обращения к ним с помощью вызова их из специальной библиотеки). в общем случае ПО, разрабатываемое на сегодняшний день, в своей конечной рабочей фазе представляет из себя машинный код(i.e. the method of connecting standard functions and / or data to the executable program at the time of accessing them by calling them from a special library). in the general case, the software being developed today, in its final working phase, is a machine code
(будь то процессорные директивы или команды какой-либо виртуальной машины). Этот код можно назвать «чёpным ящикoм».(be it processor directives or commands of any virtual machine). This code can be called a “black box”.
Если «чёpный ящик» содержит в себе ошибку, то общий путь её нейтрализации сводится к следующим этапам:If the “black box” contains an error, then the general way to neutralize it is reduced to the following steps:
1. Поиск или локализация проблемы. Эта операция может выполняться различными методами: а. Анализ внешних данных системы: сообщения об ошибках, логи, записи в базе данных и т.д. b. Воспроизведение проблемы в среде, где возможен запуск1. Search or localization of the problem. This operation can be performed by various methods: a. Analysis of external system data: messages about errors, logs, entries in the database, etc. b. Reproducing a Problem in a Runable Environment
«чёpнoгo ящикa» в режиме отладки. 2. Устранение, путём изменение «иcxoднoгo кoдa» 3. Пересборка «чёpнoгo ящикa»"Black box" in debug mode. 2. Remedy by changing the "original code" 3. Reassembly of the "black box"
4. Перезапуск системы4. System restart
5. Получение подтверждения о том, что проблема устранена, путём повторного тестирования.5. Obtaining confirmation that the problem has been resolved by re-testing.
Для больших компаний, занимающихся созданием программного обеспечения, данная процедура реализуется гораздо сложнее.For large software companies, this procedure is much more complicated.
При таком подходе для устранения даже очень незначительных ошибок тратится масса времени. При этом одна только пересборка «чёpнoгo ящикa» может занимать несколько часов. Соответственно если существуют две или три проблемы, которые распределены между двумя, тремя разработчиками, то только на процесс пересборки могут уйти несколько дней.With this approach, a lot of time is wasted to eliminate even very minor errors. Moreover, the reassembly of the “black box” alone can take several hours. Accordingly, if there are two or three problems that are distributed between two, three developers, then only the reassembly process can take several days.
Раскрытие изобретения Задачей данного изобретения является исключение выполнения процесса пересборки «чёpнoгo ящикa» и/или перезапуска системы.SUMMARY OF THE INVENTION An object of the present invention is to prevent the black box from being assembled and / or restarting the system.
Технический результат, который достигается при использовании заявляемого изобретения, заключается в экономии времени разработчика и обеспечении возможности вносить изменения в уже стартованную систему без ее перезапуска.The technical result that is achieved by using the claimed invention is to save the developer’s time and to provide the ability to make changes to an already launched system without restarting it.
Указанный технический результат достигается за счет того, что в способе компоновки (сборки) программного обеспечения определенный программный модуль формирует в оперативной памяти двоичную матрицу указателей на функции модулей, которые собираются в виде отдельных файлов, с последующей их загрузкой в исполняемую программу, таким образом, что при вызове функции из модуля N, где К - номер функции в модуле, управление передаётся функции, адрес которой находится в матрице в N-ой строке, К-ом столбце, причем модуль и соответствующий ему файл, содержащий ошибку, перегружается после внесения необходимых исправлений в исходный код алгоритма, с последующей компиляцией и перезагрузкой предыдущей версии модуля на отлаженную новую, с последующим тестированием. В предпочтительном варианте предложенного изобретения модуль, содержащий ошибку, заменяется другим модулем, соответствующие функции которого заданы таким образом, что при их исполнении происходит принятие решения о том, функция какого модуля (заранее или вновь собранного) должна быть выполнена, либо о том, какой скрипт-файл, выполняющий соответствующую функцию должен быть выполнен соответствующей скрипт-машиной (интерпретатором).The specified technical result is achieved due to the fact that in the method of compiling (assembling) the software, a certain software module generates in binary memory a binary matrix of pointers to the functions of the modules, which collected in the form of separate files, with their subsequent loading into the executable program, so that when a function is called from module N, where K is the number of the function in the module, control is transferred to the function whose address is in the matrix in the Nth row, K- th column, and the module and the corresponding file containing the error are reloaded after making the necessary corrections to the source code of the algorithm, followed by compilation and rebooting of the previous version of the module to a debugged new one, with subsequent testing. In a preferred embodiment of the proposed invention, the module containing the error is replaced by another module whose corresponding functions are set in such a way that when they are executed, a decision is made about which function of the module (previously or newly assembled) should be executed, or about which script -file performing the corresponding function must be executed by the corresponding script machine (interpreter).
Описание фигур чертежей На Фиг. 1 показана блок-схема вычислительной системы согласно настоящему изобретению.DESCRIPTION OF DRAWINGS FIG. 1 is a block diagram of a computing system according to the present invention.
На Фиг. 2 показана блок-схема привязки программного модуля и составляющих его элементов к оперативной памяти, файловой системе и шине ввода-вывода. На Фиг. 3 показан классический пример фрагмента программы, написанной на языке С.In FIG. Figure 2 shows a block diagram of the binding of a software module and its constituent elements to RAM, the file system, and the I / O bus. In FIG. Figure 3 shows a classic example of a fragment of a program written in C.
На Фиг. 4 показана блок-схема матрицы указателей.In FIG. 4 shows a block diagram of a matrix of pointers.
На Фиг. 5 приведена диаграмма, в которой рассмотрен пример алгоритма, выполненный на неком абстрактном алгоритмическом языке программирования.In FIG. Figure 5 shows a diagram in which an example of an algorithm executed on a certain abstract algorithmic programming language.
На Фиг. 6 приведена блок-схема «yпpaвляющeгo» модуля.In FIG. Figure 6 shows the block diagram of the "control" module.
На Фиг. 7 приведена блок-схема алгоритма реализации требования, предъявляемого к «мaшиннoмy кoдy» «пpoгpaммнoгo модуля)).In FIG. 7 is a block diagram of an algorithm for implementing the requirements for the “machine code” of a “software module)).
На Фиг. 8 блок-схема работы «пpoкcи-фyнкции)).In FIG. 8 flowchart of the “function-function)).
На Фиг. 9 приведена схема процесса загрузки модуля с номером M.In FIG. 9 is a diagram of the process of loading the module with the number M.
На Фиг. 10 приведена схема-результат загрузки прокси-модуля с номером M.In FIG. 10 is a diagram showing the result of loading the proxy module with number M.
На Фиг. 11 приведена блок-схема алгоритма загрузки «yпpaвляющим)) модулем «ocнoвныx» модулей.In FIG. 11 is a block diagram of the loading algorithm by the “managing”) module of the “main” modules.
На Фиг. 12 приведена стандартная блок-схема компиляции исходного кода алгоритма в «пpoгpaммный)) модуль.In FIG. Figure 12 shows the standard block diagram of compiling the source code of the algorithm into a “software”) module.
На Фиг. 1 показана блок-схема вычислительной системы согласно настоящему изобретению. Вычислительная система включает в себя центральный процессор (ЦП), оперативную память, шины ввода-вывода, а также файловую систему. Вычислительная система может также включать в себя различные элементы, не показанные на чертеже в целях четкости его представления, такие как дисководы, клавиатуры, дисплейные устройства, сетевые подключения, шины дополнительной памяти, дополнительные ЦП и т.д. На Фиг. 2 показана блок-схема привязки программного модуля и составляющих его элементов к оперативной памяти, файловой системе и шине ввода-вывода.In FIG. 1 is a block diagram of a computing system according to the present invention. A computing system includes a central processing unit (CPU), RAM, I / O buses, and a file system. A computing system may also include various elements not shown in the drawing for the purpose of clarity of its presentation, such as drives, keyboards, display devices, network connections, additional memory buses, additional CPUs, etc. In FIG. Figure 2 shows a block diagram of the binding of a software module and its constituent elements to RAM, the file system, and the I / O bus.
Фиг. 3 иллюстрирует собой следующий пример.FIG. 3 illustrates the following example.
Это классический пример программы, написанной на языке С. Предлагаемый подход состоит в том, что данный исходный кодThis is a classic example of a program written in C. The proposed approach is that the given source code
(исходный код - это текст программы на алгоритмическом языке; в компьютере исходный текст либо непосредственно выполняется интерпретатором - транслятором, способным параллельно переводить и выполнять программу, написанную на алгоритмическом языке высокого уровня, либо предварительно переводится компилятором в стандартный загрузочный код, способный многократно исполняться в определённой вычислительной среде) рассматривается как две составляющие - «aлгopитм» и «cyщнocть». «Aлгopитм» (в данном примере) - это вывод на консоль строки «Hello world». «Cyщнocть» в данном случае подразумевается под некоторой функциональностью, которая реализовывает функцию «printf». Как пример можно привести «MSVCRT.DLL» или «LIBC» библиотеки.(the source code is the text of the program in an algorithmic language; on a computer, the source text is either directly executed by an interpreter - translator capable of simultaneously translating and executing a program written in a high-level algorithmic language, or is preliminarily translated by the compiler into a standard boot code that can be repeatedly executed in a certain computing environment) is considered as two components - “algorithm” and “system”. "Algorithm" (in this example) is the output to the console of the string "Hello world". “Security” in this case is meant by some functionality that implements the “printf” function. An example is the "MSVCRT.DLL" or the "LIBC" library.
Смысл данного условного разбиения исходного кода состоит в утверждении, что «aлгopитм» должен быть модифицируемым непосредственно во время работы системы, без перезапуска и/или пересборки.The meaning of this conditional decomposition of the source code is to state that the “algorithm” must be modifiable directly during the operation of the system, without restarting and / or rebuilding.
Эта модификация осуществляется с использованием матрицы и кодов основных модулей. Матрица может быть выполнена различными способами.This modification is carried out using the matrix and codes of the main modules. The matrix can be performed in various ways.
Наиболее предпочтительный - таблицы «yкaзaтeлeй на функцию). Т.е. матрица представляет из себя двумерный массив данных, количество строк в котором соответствует количеству «ocнoвныx» модулей, при этом количество элементов в каждой строке совпадает с количеством функций алгоритма соответствующего модуля. Каждый элемент матрицы представляет собой указатель на соответствующую функцию, соответствующего модуля (см. Фиг. 4).The most preferable ones are the tables “specifying a function). Those. the matrix is a two-dimensional data array, the number of rows in which corresponds to the number of “basic” modules, while the number of elements in each row coincides with the number of algorithm functions of the corresponding module. Each matrix element is a pointer to the corresponding function of the corresponding module (see Fig. 4).
«Aлгopитм» представляет из себя исходный код «ocнoвныx» модулей. Под «yкaзaтeлeм на функцию)) будем понимать некий физический объект, однозначно идентифицирующий функцию модуля, таким образом, что передача управления по данному указателю (адресу), в рамках выполняющей машины, привела бы к выполнению данной функции.“Algorithm” is the source code of the “main” modules. By “index to function)) we mean a certain physical object that uniquely identifies the function of the module, so that the transfer of control at a given pointer (address), within the framework of the executing machine, would lead to the execution of this function.
Соответственно, каким образом будет осуществляться передача управления той или иной функции данный способ никак не нормирует, поскольку это зависит от того какой конкретно код какой конкретно машиной / процессором выполняется. Например, если это машинный код (инструкции процессора), то адрес функции ни что иное, как 4 байта (указатель на функцию в 32-битной системе или 8 байт 64-битной) и передача управления - ни что иное, как ассемблерная команда «call». «Cyщнocти)) же представляют собой машинный код, указатели на функции которого, так же как и в случае с алгоритмом, являются элементами матрицы, с той лишь разницей, что под этими элементами лежит чёрный ящик, алгоритм которого - неизменяем. В тоже время «cyщнocти», будучи не более чем элементами матрицы, могут быть заменены.Accordingly, how this control will be transferred to a particular function, this method does not normalize in any way, since it depends on what specific code is executed by which particular machine / processor. For example, if this is machine code (processor instructions), then the address of the function is nothing more than 4 bytes (a pointer to a function in a 32-bit system or 8 bytes of 64-bit) and the transfer of control is nothing more than an assembler command “call ". “Cycle”) is a machine code, the pointers to the functions of which, as in the case of the algorithm, are matrix elements, with the only difference being that there is a black box under these elements, the algorithm of which is immutable. At the same time, “cychnosti”, being nothing more than matrix elements, can be replaced.
Исходный код выполняется в виде алгоритмического языка программирования. Основным требованием к исходному коду является наличие транслятора (программы, преобразующей текст, написанный на одном языке, в текст на другом языке) или компилятора. Компилятор - программа, преобразующая текст, написанный на алгоритмическом языке, в программу, состоящую из машинных команд. Компилятор создает законченный вариант программы на машинном языке. К данному транслятору/компилятору предъявляются следующие требования:The source code is executed in the form of an algorithmic programming language. The main requirement for the source code is the availability of a translator (a program that converts text written in one language into text in another language) or a compiler. A compiler is a program that converts text written in an algorithmic language into a program consisting of machine instructions. The compiler creates a complete version of the program in machine language. This translator / compiler has the following requirements:
• Транслятор/компилятор на основании данного исходного кода может собрать «пpoгpaммный модуль)) (согласно ГОСТ 19781- 90 программный модуль - это программа или функционально завершённый фрагмент программы, предназначенный для: хранения; трансляции; объединения с другими программными модулями; и загрузки в оперативную память). • В «мaшиннoм кoдe» (под машинными кодами в данном случае понимаются как инструкции процессора, так и команды какой- либо виртуальной машины), полученном в результате трансляции/компиляции должно присутствовать понятие «yкaзaтeль на функцию)). Под указателем на функцию понимается некий физический объект, однозначно идентифицирующий функцию модуля, таким образом, что передача управления по данному указателю (адресу), в рамках выполняющей машины, привела бы к выполнению данной функции.• A translator / compiler based on this source code can assemble a “software module)) (according to GOST 19781- 90 software module is a program or functionally complete fragment of a program intended for: storage; Broadcast associations with other software modules; and loading into RAM). • In the “machine code” (in this case, machine codes are understood to mean both the instructions of the processor and the instructions of a virtual machine) obtained as a result of translation / compilation, the notion of “index for a function” must be present)). A function pointer refers to a physical object that uniquely identifies the function of a module, so that transferring control to a given pointer (address), within the framework of the executing machine, would lead to the execution of this function.
Дополнительным, но не обязательным, требованием является наличие интерпретатора (интерпретатор - транслятор, способный параллельно переводить и выполнять программу, написанную на алгоритмическом языке высокого уровня) для данного языка программирования.An additional, but not mandatory, requirement is the presence of an interpreter (an interpreter is a translator capable of simultaneously translating and executing a program written in a high-level algorithmic language) for a given programming language.
На Фиг. 5 приведена диаграмма, в которой рассмотрен пример алгоритма, выполненный на неком абстрактном алгоритмическом языке программирования.In FIG. Figure 5 shows a diagram in which an example of an algorithm performed in a certain abstract algorithmic programming language is considered.
На диаграмме представлен примитивный алгоритм, состоящий из двух функций, «functionl», «function2», причём «tunction2» вызывает «functionl» (строка 7). Предположим, что этот исходный код является базовым для сборки какого-то программного модуля.The diagram shows a primitive algorithm consisting of two functions, “functionl”, “function2”, and “tunction2” calls “functionl” (line 7). Suppose that this source code is the base for building some kind of software module.
Метод предполагает, что при помощи транслятора/компилятора будет собран «пpoгpaммный модуль)), который будет загружен в исполняемую систему. На данном этапе метод не расходится с известными техническими решениями, за исключением того, что:The method assumes that with the help of a translator / compiler a “program module)) will be assembled, which will be loaded into the executable system. At this stage, the method does not differ from the known technical solutions, except that:
• Программный модуль должен быть «ocнoвным» модулем (описано ниже) • Машинный код модуля должен быть собран таким образом, что вызов функции «fιmctionl», выполненный из функции «fimction2» не должен приводить к передаче управления функции «functюnl», а управление должно передаваться той функции, адрес которой в данный момент находится в соответствующем элементе матрицы. Например, предположим, что номер нашего модуля в системе - N, а номер функции «functionl» в модуле - 1, тогда реализация лексемы строки 7 сводится к тому, что управление передаётся функции адрес которой находится в матрице в N-ой строке, 1-ом столбце (см. схему на Фиг. 7). На этой схеме:• The program module must be a “core” module (described below) • The machine code of the module must be assembled in such a way that a call to the fιmctionl function made from the fimction2 function should not result in the transfer of control to the function function, and control should passed to the function whose address is currently in the corresponding matrix element. For example, suppose that the number of our module in the system is N, and the number of the functionl function in the module is 1, then the implementation of the token of line 7 is reduced to the fact that control is transferred to the function whose address is in the matrix in the Nth line, 1- ohm column (see diagram in Fig. 7). In this diagram:
• сплошная стрелка означает, что значение соответствующего указателя (место исхода стрелки) содержит адрес соответствующей функции соответствующего модуля, так например Указатель 1 строки M содержит в себе адрес функции 1 «ocнoвнoгo» модуля M.• a solid arrow means that the value of the corresponding pointer (the place of the arrow's exit) contains the address of the corresponding function of the corresponding module, for example, Pointer 1 of the line M contains the address of function 1 of the “main” module M.
• штрихованная линия означает, что при вызове функции алгоритма будет вызвана та функция, адрес которой находится в соответствующем указателе матрицы. Например, при вызове функции «functionl» модуля M будет вызвана функция, адрес которой находится в матрице указателей в строке M, первом столбце.• a dashed line means that when the function of the algorithm is called, the function whose address is in the corresponding matrix pointer will be called. For example, when calling the function “functionl” of module M, a function will be called whose address is in the matrix of pointers in row M, the first column.
Это требование, предъявляемое к «мaшиннoмy кoдy» «пpoгpaммнoгo мoдyля» методом.This is the requirement for the “machine code” of the “software module” method.
Метод никак не регламентирует каким именно способом машинный код будет выполнен таким образом, что бы он (код) удовлетворял данному требованию. Алгоритмов решения данной проблемы существует множество, но этот вопрос не рассматривается в рамках данного метода.The method does not regulate exactly how the machine code will be executed in such a way that it (the code) Satisfied this requirement. There are many algorithms for solving this problem, but this issue is not considered in the framework of this method.
«Ocнoвнoй» модуль представляет из себя «пpoгpaммный» модуль полученный в результате трансляции/компиляции исходного кода алгоритма (см. Фиг. 12). «Ocнoвнoй» модуль так же содержит в себе дополнительный фyнкциoнaл» и данные:The “main” module is a “software” module obtained as a result of translation / compilation of the source code of the algorithm (see Fig. 12). The "main" module also contains additional functionality "and data:
• уникальный идентификатор модуля (в пределах системы), необходимый управляющему модулю, для идентификации данного «ocнoвнoгo мoдyля»;• a unique identifier of the module (within the system) required by the control module to identify this “basic module”;
• функциональность инициализирующую соответствующие элементы строки матрицы указателями на функции данного модуля; здесь же необходимо отметить, что каждая алгоритмическая функция «иcxoднoгo кoдa» данного «ocнoвнoгo мoдyля» так же имеет свой собственный идентификатор, таким образом, что каждому «yкaзaтeлю на функцию)) соответствует свой уникальный (в пределах модуля) идентификатор;• functionality initializing the corresponding elements of the matrix row with pointers to the functions of this module; here it is necessary to note that each algorithmic function of the “original code” of this “main model” also has its own identifier, so that each “function code)) has its own unique (within the module) identifier;
• указатель на матрицу, получаемый от управляющего)) модуля (наличие матрицы подразумевает наличие «пpoгpaммнoгo модуля)) где эта матрица будет выполнена, физически создана. Этот модуль - «yпpaвляющий» модуль (см. Фиг. 6). Те же модули (в приведённом примере он один), где непосредственно будет содержаться код выполненных функций алгоритма - скрипта относятся к «ocнoвным)> модулям). На «Упpaвляющий» модуль возлагаются следующие технические требования: о 1. Хранение матрицы элементов. о 2. «Упpaвляющий)) модуль реализует алгоритм загрузки «ocнoвныx)) модулей (см. схему на Фиг. 11).• a pointer to a matrix received from the manager)) module (the presence of a matrix implies the presence of a “software module)) where this matrix will be executed, physically created. This module is a “control” module (see Fig. 6). The same modules (in the given example, it is one), which will directly contain the code of the performed functions of the algorithm - the script refers to the "main"> modules). The “Control” module has the following technical requirements: o 1. Storage of the matrix of elements. о 2. “The control)) module implements the algorithm for loading the“ basic)) modules (see the diagram in Fig. 11).
«Пpoкcи-мoдyль» представляет из себя не что иное как «пpoгpaммный мoдyль» с тем же «нaбopoм» функций «ocнoвнoгo» модуля, но реализация этих функций сводится не выполнению их функциональности, а к делегированию исполнения соответствующей функции либо соответствующему основному модулю (модулям), или же какой-либо другой функциональности, реализующей данную функцию. Данные функции «пpoкcи-мoдyля» будем называть «пpoкcи-фyнкциями» (см. схему на Фиг. 8). Это означает что «пpoкcи-мoдyль» должен «знaть» (иметь ссылку на основной модуль) о существовании «ocнoвнoгo» модуля (или их множестве, в общем случае). Необходимо отметить, что наличие «пpoкcи-мoдyлeй» не является обязательной частью системы. Их присутствие, структура определяется непосредственно решаемой задачей. Их наличие является естественным и наиболее рациональным, на них налагаются определённые технические требования: - реализуются функции «ocнoвнoгo» модуля, как описано выше;"Proxy-module" is nothing more than “Software module” with the same “set” of functions of the “main” module, but the implementation of these functions does not come down to the execution of their functionality, but to delegating the execution of the corresponding function to either the corresponding main module (s), or some other functionality that implements this function. These functions of the “proxy-module” will be called “proxy-functions” (see the diagram in Fig. 8). This means that the “proxy module” must “know” (have a link to the main module) the existence of the “main” module (or a multitude of them, in the general case). It should be noted that the presence of “proxy-modules” is not a mandatory part of the system. Their presence, structure is determined directly by the problem being solved. Their presence is natural and most rational, certain technical requirements are imposed on them: - the functions of the “main” module are implemented, as described above;
- реализуется так называемый дополнительный фyнкциoнaл» и данные, которые выполнены в «ocнoвнoм» модуле (необходимо это для того, чтобы алгоритм загрузки «пpoкcи-мoдyля» и «ocнoвнoгo» модуля были абсолютно идентичны). - управляющий)) модуль не делает разницы между «ocнoвными» и «пpoкcи-мoдyлями)>.- the so-called additional function is implemented and the data that is executed in the “main” module (this is necessary in order for the algorithm for loading the “proxy-module” and the “main” module to be absolutely identical). - manager)) the module does not distinguish between "basic" and "proxy-modules)>.
Пояснения к схеме на Фиг. 9:Explanations for the circuit of FIG. 9:
Сплошная стрелка означает, что значение соответствующего указателя (место исходя стрелки) содержит на схеме адрес соответствующей функции соответствующего модуля, так например Указатель 1 строки M содержит в себе адрес функции 1 «ocнoвнoгo)) модуля M. Принцип осуществления изобретенияA solid arrow means that the value of the corresponding pointer (the place starting from the arrow) contains on the diagram the address of the corresponding function of the corresponding module, for example, Pointer 1 of the line M contains the address of function 1 of the “main”) module M. The principle of carrying out the invention
Способ реализуется за счет того, что определенный программный модуль формирует в оперативной памяти двоичную матрицу указателей на функции модулей. Эти модули собираются в виде отдельных файлов, с последующей их загрузкой в исполняемую программу, таким образом, что при вызове функции из модуля N, где К - номер функции в модуле, управление передаётся функции, адрес которой находится в матрице в N-ой строке, К-ом столбце.The method is implemented due to the fact that a certain software module generates in binary memory a binary matrix of pointers to the functions of the modules. These modules are assembled as separate files, with their subsequent loading into the executable program, so that when a function is called from module N, where K is the number of the function in the module, control is transferred to the function whose address is in the matrix in the Nth row, Kth column.
Если в процессе использования отладчика или другой системы по обнаружению ошибок обнаружилось, что модуль и соответствующий ему файл, содержат ошибку, то этот модуль перегружается после внесения необходимых исправлений в исходный код алгоритма, с последующей трансляцией/компиляцией исходного кода. На конечном этапе производится перезагрузка предыдущей версии модуля на отлаженную новую, с последующим тестированием.If during the use of a debugger or other error detection system it was found that the module and its corresponding file contain an error, this module is overloaded after making the necessary corrections to the source code of the algorithm, followed by translation / compilation of the source code. At the final stage, the previous version of the module is rebooted into a debugged new one, followed by testing.
На первом этапе формирования двоичной матрицы в программном модуле, т.е. когда программа (система) запущена, выполняется загрузка «ocнoвныx» модулей. Это означает, что существует список основных модулей, по которому выполняется загрузка каждого модуля в соответствии со схемой, показанной на Фиг. 11. Данный список представляет из себя ни что иное, как массив имён «ocнoвныx» модулей. Как, где указанный список расположен, а так же как инициируется загрузка данный метод не рассматривает. Это может быть выполнено различными способами.At the first stage of the formation of a binary matrix in a software module, i.e. when the program (system) is started, loading of the “main” modules is performed. This means that there is a list of main modules according to which each module is loaded in accordance with the circuit shown in FIG. 11. This list is nothing more than an array of names of the “main” modules. How, where the specified list is located, as well as how the download is initiated, this method does not consider. This can be done in various ways.
После того как все основные модули загружены можно приступить непосредственно к отладке системы. Как уже отмечалось ранее в классической схеме отладки ПО, при возникновении какой- либо неполадки, для разработчика неизбежны фазы пересборки и перезапуска системы.After all the main modules are loaded, you can proceed directly to debugging the system. As previously noted in the classic software debugging scheme, when any or malfunctions, for the developer, the phases of rebuilding and restarting the system are inevitable.
Данный метод позволяет избежать фазы перезапуска и/или пересборки системы. Таким образом достигается экономия времени. Это достигается за счет того, что если обнаружена ошибка, то производится:This method avoids the restart and / or rebuild phase of the system. This saves time. This is achieved due to the fact that if an error is detected, then it is done:
1. Локализация проблемы. Результатом анализа должен явиться вывод о том какие именно функции какого модуля должны быть изменены для достижения положительного результата. Эта операция может выполняться различными методами: a. Анализ внешних данных системы, как то: сообщения об ошибках, логи, записи в базе данных и т.д. b. Воспроизведение проблемы в среде, где возможен запуск «чёpнoгo ящикa» в режиме отладки. 2. Далее модуль, содержащий ошибку перегружается. (Сама система при этом не перестартовывается.) Алгоритм перезагрузки совпадает с алгоритмом загрузки изображённым на схеме, показанной на Фиг. 11. Схематично результат загрузки модуля с номером M показан на схеме, отраженной на Фиг. 9. При этом, в роли «ocнoвнoгo» модуля может выступать как сам1. Localization of the problem. The result of the analysis should be a conclusion about which functions of which module should be changed to achieve a positive result. This operation can be performed by various methods: a. Analysis of the external data of the system, such as: error messages, logs, records in the database, etc. b. Reproduction of a problem in an environment where the “black box” can be started in debug mode. 2. Next, the module containing the error is reloaded. (The system itself does not restart at the same time.) The reboot algorithm matches the boot algorithm shown in the diagram shown in FIG. 11. Schematically, the result of loading the module with the number M is shown in the diagram shown in FIG. 9. At the same time, it can act as the “main” module as itself
«ocнoвнoй» модуль, так и соответствующий ему «пpoкcи-мoдyль»; в этой связи будем различать два способа перезагрузки:The "main" module, and the corresponding "proxy-module"; In this regard, we will distinguish between two ways to reboot:
Способ А:Method A:
Внесением необходимых исправлений в исходный код алгоритма «ocнoвнoгo» модуля. о Трансляция/Компиляция «ocнoвнoгo» модуля. о Перезагрузка «cтapoгo» модуля на «нoвый» «ocнoвнoй» модуль (см. схему на Фиг. 11) о При этом «нoвый» основной модуль не обязан выполнять все функции основного модуля. В общем случае могут быть выполнены только те функции, которые нуждаются в перезагрузке. Это так же означает, что «нoвыx» основных модулей, в общем случае, может быть собрано множество. Способ Б:By making the necessary corrections to the source code of the “basic” algorithm of the module. o Translation / Compilation of the “main” module. o Rebooting the “old” module to the “new” “main” module (see diagram in Fig. 11) o In this case, the “new” main module is not required perform all the functions of the main module. In the general case, only those functions that need a reboot can be performed. It also means that the “new” core modules, in the general case, can be assembled in a multitude. Method B:
Перезагрузкой «ocнoвнoгo» модуля, содержащего ошибку, на соответствующий ему «пpoкcи-мoдyль». а. Схематично результат загрузки модуля с номером M показан на Фиг. 10 b. При этом необходимо отметить, что: i. идентификатор «пpoкcи-мoдyля» совпадает с идентификатором соответствующего ему «ocнoвнoгo» модуля, необходимо это для того, что бы установить указатели на функции в глобальной матрицеRebooting the “main” module containing the error to the corresponding “proxy-module”. but. Schematically, the result of loading the module with the number M is shown in FIG. 10 b. It should be noted that: i. the identifier of “proxy-module” coincides with the identifier of the corresponding “main” module, this is necessary in order to set pointers to functions in the global matrix
«ocнoвнoгo» модуля на указатели на функции соответствующего «пpoкcи-мoдyля» ii. соответствующий основной модуль должен быть инициализирован указателем на глобальную матрицу. Необходимо это для того, что бы в тот момент когда управление будут передано функциям основного модуля, все вызовы, к функциям алгоритма, были бы корректно делегированы к вызовам тех функций, указатели на которые в данный момент находятся в матрице. iii. «пpoкcи-мoдyль» не обязан выполнять все функции основного модуля. В общем случае могут быть выполнены только те функции, которые нуждаются в перезагрузке. iiii. Для каждого «ocнoвнoгo» модуля может быть один или множество «пpoкcи-мoдyлeй» с. При этом алгоритм «пpoкcи-фyнкции» в «пpoкcи- мoдyлe» реализован таким образом, что: (Фиг 6.) i. алгоритм проверяет наличие скрипт файла в «извecтнoм» каталоге файловой системы. ii. в случае его наличия исполняет файл, используя «cкpипт- мaшинy» (интерпретатор). iii. в случае отсутствия файла выполняется соответствующая функция «ocнoвнoгo» модуля. d. В заранее определённый каталог файловой системы выкладывается фaйл(ы) функций, алгоритм которых должен быть изменён. Таким образом при вызове соответствующей прокси- функции она в случае наличия скрипт-файла, выполнит его используя соответствующую скрипт машину, если же файл не найден то будет вызвана соответствующая функция «ocнoвнoгo мoдyля» е. В общем случае алгоритм «пpoкcи-фyнкции» целиком и полностью зависит от конкретной задачи, и в общем невозможно определить какой именно алгоритм будет использоваться. 3. После перезагрузки модуля и функциональности необходимых узлов производится повторное тестирование.“Basic” module to pointers to the functions of the corresponding “proxy-module” ii. the corresponding main module must be initialized with a pointer to the global matrix. This is necessary so that at the moment when control is transferred to the functions of the main module, all calls to the functions of the algorithm would be correctly delegated to the calls of those functions, the pointers to which are currently in the matrix. iii. The proxy module is not required to perform all the functions of the main module. In the general case, only those functions that need a reboot can be performed. iiii. For each “main” module, there can be one or many “proxy modules” with. At the same time, the “proxy function” algorithm in the “proxy” is implemented in such a way that: (Fig 6.) i. the algorithm checks for the presence of a script file in the "known" file system directory. ii. if it exists, it executes the file using the “script-machine” (interpreter). iii. if there is no file, the corresponding function of the “main” module is performed. d. The file (s) of functions whose algorithm is to be changed are laid out in a predetermined directory of the file system. Thus, when the corresponding proxy function is called, it will execute it using the appropriate script machine if there is a script file, if the file is not found, the corresponding function of the “main model” will be called. In general, the whole “function” algorithm will completely depends on the specific task, and in general it is impossible to determine which algorithm will be used. 3. After the module is rebooted and the functionality of the necessary nodes is retested.
При таком подходе к разработке техническим результатом является сэкономленное на отладке время разработчика, так как при: • использовании Способа А система не нуждалась в перезапуске,With this development approach, the technical result is the developer’s time spent on debugging, since when: • using Method A, the system did not need to be restarted,
• при использовании Способа Б система не нуждалась как ни в пересборке, так и ни в перезапуске. • when using Method B, the system did not need either rebuilding or restarting.

Claims

ФОРМУЛА FORMULA
1. Способ компоновки (сборки) программного обеспечения, отличающийся тем, что определенный программный модуль формирует в оперативной памяти двоичную матрицу указателей на функции модулей, которые собираются в виде отдельных файлов, с последующей их загрузкой в исполняемую программу, таким образом, что при вызове функции из модуля N, где К - номер функции в модуле, управление передаётся функции, адрес которой находится в матрице в N-ой строке, К-ом столбце, причем модуль и соответствующий ему файл, содержащий ошибку, перегружается после внесения необходимых исправлений в исходный код алгоритма, с последующей компиляцией и перезагрузкой предыдущей версии модуля на отлаженную новую, с последующим тестированием.1. A method for assembling (assembling) software, characterized in that a certain program module generates in binary memory a binary matrix of pointers to the functions of the modules, which are collected as separate files, followed by their loading into the executable program, so that when the function is called from module N, where K is the number of the function in the module, control is transferred to the function whose address is in the matrix in the Nth row, Kth column, and the module and the corresponding file containing the error are overloaded after entering the necessary corrections to the source code of the algorithm, followed by compilation and reloading of the previous version of the module to a debugged new one, followed by testing.
2. Способ по п. 1 отличающийся тем, что модуль, содержащий ошибку, заменяется другим модулем, соответствующие функции которого заданы таким образом, что при их исполнении происходит принятие решения о том, функция какого модуля (заранее или вновь собранного) должна быть выполнена, либо о том, какой скрипт-файл, выполняющий соответствующую функцию должен быть выполнен соответствующей скрипт-машиной (интерпретатором). 2. The method according to p. 1, characterized in that the module containing the error is replaced by another module whose corresponding functions are set in such a way that when they are executed, a decision is made about which function of the module (previously or newly assembled) should be performed, or which script file that performs the corresponding function should be executed by the corresponding script machine (interpreter).
PCT/RU2005/000581 2005-10-04 2005-11-18 Software integration (assembly) method WO2007040419A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
RU2005130659/09A RU2306597C2 (en) 2005-10-04 2005-10-04 Method for linking (assembling) software
RU2005130659 2005-10-04

Publications (1)

Publication Number Publication Date
WO2007040419A1 true WO2007040419A1 (en) 2007-04-12

Family

ID=37906387

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/RU2005/000581 WO2007040419A1 (en) 2005-10-04 2005-11-18 Software integration (assembly) method

Country Status (2)

Country Link
RU (1) RU2306597C2 (en)
WO (1) WO2007040419A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116483474A (en) * 2023-06-21 2023-07-25 中国工商银行股份有限公司 Parameter loading method, device, equipment, computer readable storage medium and product

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5946673A (en) * 1996-07-12 1999-08-31 Francone; Frank D. Computer implemented machine learning and control system
US5946674A (en) * 1996-07-12 1999-08-31 Nordin; Peter Turing complete computer implemented machine learning method and system
WO2000023885A1 (en) * 1998-10-16 2000-04-27 Softbook Press, Inc. Storage of static data for efficient access and field upgrade
RU2206119C2 (en) * 2000-09-22 2003-06-10 Закрытое акционерное общество "МЦСТ" Method for producing object code

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5946673A (en) * 1996-07-12 1999-08-31 Francone; Frank D. Computer implemented machine learning and control system
US5946674A (en) * 1996-07-12 1999-08-31 Nordin; Peter Turing complete computer implemented machine learning method and system
WO2000023885A1 (en) * 1998-10-16 2000-04-27 Softbook Press, Inc. Storage of static data for efficient access and field upgrade
RU2206119C2 (en) * 2000-09-22 2003-06-10 Закрытое акционерное общество "МЦСТ" Method for producing object code

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116483474A (en) * 2023-06-21 2023-07-25 中国工商银行股份有限公司 Parameter loading method, device, equipment, computer readable storage medium and product
CN116483474B (en) * 2023-06-21 2023-09-19 中国工商银行股份有限公司 Parameter loading method, device, equipment, computer readable storage medium and product

Also Published As

Publication number Publication date
RU2005130659A (en) 2007-04-10
RU2306597C2 (en) 2007-09-20

Similar Documents

Publication Publication Date Title
US6795963B1 (en) Method and system for optimizing systems with enhanced debugging information
US8607208B1 (en) System and methods for object code hot updates
US5325531A (en) Compiler using clean lines table with entries indicating unchanged text lines for incrementally compiling only changed source text lines
CN102402427B (en) A kind of update method of java application and device
US5313387A (en) Re-execution of edit-compile-run cycles for changed lines of source code, with storage of associated data in buffers
US5201050A (en) Line-skip compiler for source-code development system
US5170465A (en) Incremental-scanning compiler for source-code development system
CA2292123C (en) Method and system for modifying executable code to add additional functionality
US5193191A (en) Incremental linking in source-code development system
US11385993B2 (en) Dynamic integration of command line utilities
JP2021002317A (en) Method, apparatus, device and storage medium for upgrading application
US20060101432A1 (en) Assembly language code compilation for an instruction-set architecture containing new instructions using the prior assembler
US20090319554A1 (en) Unified metadata for external components
US7320121B2 (en) Computer-implemented system and method for generating embedded code to add functionality to a user application
WO2015117434A1 (en) Method and device for manufacturing patch, and method and device for activating patch
US8943480B2 (en) Setting breakpoints in optimized instructions
Pina et al. A {DSL} Approach to Reconcile Equivalent Divergent Program Executions
US6519768B1 (en) Instruction translation method
US5301327A (en) Virtual memory management for source-code development system
US7640421B1 (en) Method and system for determining context switch state
CN113454606B (en) Software checkpoint-recovery between different compiled executables
CN111666102A (en) File format conversion method, chip verification method, related device and network chip
JPH03118635A (en) Incremental compiler for source code developing system
Curtsinger et al. Riker:{Always-Correct} and fast incremental builds from simple specifications
RU2306597C2 (en) Method for linking (assembling) software

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application
NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 05825107

Country of ref document: EP

Kind code of ref document: A1