KR102405886B1 - Apparatus and method of providing solution of source transformation for architectural changes - Google Patents

Apparatus and method of providing solution of source transformation for architectural changes Download PDF

Info

Publication number
KR102405886B1
KR102405886B1 KR1020220037869A KR20220037869A KR102405886B1 KR 102405886 B1 KR102405886 B1 KR 102405886B1 KR 1020220037869 A KR1020220037869 A KR 1020220037869A KR 20220037869 A KR20220037869 A KR 20220037869A KR 102405886 B1 KR102405886 B1 KR 102405886B1
Authority
KR
South Korea
Prior art keywords
instruction
correction
source
instruction set
architecture
Prior art date
Application number
KR1020220037869A
Other languages
Korean (ko)
Inventor
김화수
김태성
김수빈
이주영
최민혁
이수안
Original Assignee
주식회사 넷아스
김화수
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 주식회사 넷아스, 김화수 filed Critical 주식회사 넷아스
Priority to KR1020220067011A priority Critical patent/KR20220082788A/en
Priority to KR1020220066992A priority patent/KR20220082787A/en
Application granted granted Critical
Publication of KR102405886B1 publication Critical patent/KR102405886B1/en
Priority to PCT/KR2022/010705 priority patent/WO2023177024A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding

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)
  • User Interface Of Digital Computer (AREA)
  • Telephone Function (AREA)

Abstract

본 발명은 아키텍처 변경을 위한 소스 변환 솔루션 제공 장치 및 방법에 관한 것이다. 보다 상세하게는 특정 아키텍처에서의 사용을 위하여 제작된 프로그램을 다른 아키텍처에서도 사용할 수 있도록 해당 프로그램의 소스에서 수정이 필요한 부분을 제시할 수 있는 기술에 관한 것이다.The present invention relates to an apparatus and method for providing a source conversion solution for architectural change. More specifically, it relates to a technology that can suggest the part that needs to be modified in the source of the program so that a program created for use in a specific architecture can be used in other architectures as well.

Description

아키텍처 변경을 위한 소스 변환 솔루션 제공 장치 및 방법{APPARATUS AND METHOD OF PROVIDING SOLUTION OF SOURCE TRANSFORMATION FOR ARCHITECTURAL CHANGES}APPARATUS AND METHOD OF PROVIDING SOLUTION OF SOURCE TRANSFORMATION FOR ARCHITECTURAL CHANGES

본 발명은 아키텍처 변경을 위한 소스 변환 솔루션 제공 장치 및 방법에 관한 것이다. 보다 상세하게는 특정 아키텍처에서의 사용을 위하여 제작된 프로그램을 다른 아키텍처에서도 사용할 수 있도록 해당 프로그램의 소스에서 수정이 필요한 부분을 제시할 수 있는 기술에 관한 것이다.The present invention relates to an apparatus and method for providing a source conversion solution for architectural change. More specifically, it relates to a technology that can suggest the part that needs to be modified in the source of the program so that a program created for use in a specific architecture can be used in other architectures as well.

본 명세서에서 달리 표시되지 않는 한, 이 섹션에 설명되는 내용들은 이 출원의 청구항들에 대한 종래 기술이 아니며, 이 섹션에 포함된다고 하여 종래 기술이라고 인정되는 것은 아니다.Unless otherwise indicated herein, the material described in this section is not prior art to the claims of this application, and inclusion in this section is not an admission that it is prior art.

기업 및 정부의 데이터센터에서 사용하는 x86서버는 점차 ARM 서버로 전환하는 시점에서 x86서버에서 작동하는 각종 프로그램은 인텔 CPU기반으로 제작되어 ARM서버를 사용하고자 하는 많은 수요를 미치지 못하고 있다.At the time when the x86 server used in corporate and government data centers is gradually converted to an ARM server, various programs running on the x86 server are produced based on Intel CPU, so it does not meet the large demand for using the ARM server.

이에 본 발명은 아키텍처 변경을 위한 소스 변환 솔루션을 제안하고자 한다.Accordingly, the present invention intends to propose a source conversion solution for architecture change.

일본공개특허 2007-524148 A (2007.08.23)Japanese Laid-Open Patent Application 2007-524148 A (2007.08.23) 일본공개특허 2005-532634 A (2005.10.27)Japanese Patent Application Laid-Open No. 2005-532634 A (October 27, 2005) 일본공개특허 1998-222381 A (1998.08.21)Japanese Patent Application Laid-Open No. 1998-222381 A (Aug. 21, 1998) 국내공개특허 10-2012-0031756 A (2012.04.04)Domestic Patent Publication 10-2012-0031756 A (2012.04.04)

본 발명의 일 실시예는 특정 아키텍처 기반의 프로그램의 소스를 분석하여 다른 아키텍처 기반의 프로그램으로 변환시키기 위한 소스의 수정부분을 제안하는 것이다.One embodiment of the present invention is to analyze the source of a program based on a specific architecture and propose a modified part of the source for converting to a program based on another architecture.

본 발명에서 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.The technical problems to be achieved in the present invention are not limited to the technical problems mentioned above, and other technical problems not mentioned will be clearly understood by those of ordinary skill in the art to which the present invention belongs from the description below. will be able

상술한 목적을 달성하기 위하여, 본 발명의 일 실시예에 따른 전자 장치는 메모리 (memory) 및 상기 메모리와 연결된 프로세서 (processor)를 포함하고, 상기 프로세서는, 제1 아키텍처에서의 사용을 위한 제1 소스를 분석하여, 제2 아키텍처에서의 사용을 위하여 수정이 필요한 수정명령어를 도출하고, 도출된 상기 수정명령어를 기반으로 수정요청정보를 생성하고, 상기 제1 소스 및 상기 수정요청정보를 출력할 수 있다.In order to achieve the above object, an electronic device according to an embodiment of the present invention includes a memory and a processor connected to the memory, and the processor includes a first for use in a first architecture. By analyzing the source, it is possible to derive a correction instruction requiring correction for use in the second architecture, generate correction request information based on the derived correction instruction, and output the first source and the correction request information. have.

이 때, 상기 프로세서는, 상기 수정요청정보를 기반으로 수정된 제2 소스를 입력받고, 상기 제2 소스를 기반으로 상기 제2 아키텍처를 위하여 컴파일할 수 있다.In this case, the processor may receive the second source modified based on the modification request information, and compile it for the second architecture based on the second source.

이 때, 상기 프로세서는, 상기 제1 소스 및 상기 제2 소스의 차이점에 기반하여 변경 전 제1 소스에 포함되는 제1 명령어 및 변경 후 제2 소스에 포함되는 제2 명령어를 포함하는 수정명령어세트를 생성하여 데이터베이스에 저장하고, 상기 데이터베이스에 저장된 상기 수정명령어세트를 상기 제1 명령어에 기반하여 카운팅하고, 카운팅 결과에 기반하여, 카운팅 수가 기설정된 임계카운팅수를 초과하는 경우, 해당 제1 명령어가 포함되는 상기 수정명령어세트를 자동변환명령어세트로 설정하고, 카운팅 결과에 기반하여, 카운팅 수가 기설정된 임계카운팅수 이하인 경우, 해당 제1 명령어가 포함되는 상기 수정명령어세트를 추천변환명령어세트로 설정하고, 상기 수정명령어, 상기 자동변환명령어세트 및 상기 추천변환명령어세트를 기반으로 상기 수정요청정보를 생성할 수 있다.At this time, the processor, based on the difference between the first source and the second source, a correction instruction set including a first instruction included in the first source before the change and the second instruction included in the second source after the change is generated and stored in the database, the correction instruction set stored in the database is counted based on the first instruction, and based on the counting result, when the counting number exceeds a preset threshold counting number, the first instruction is Set the included correction instruction set as an automatic conversion instruction set, and based on the counting result, when the counting number is less than or equal to a preset threshold counting number, the correction instruction set including the first instruction is set as a recommended conversion instruction set, and , it is possible to generate the correction request information based on the correction instruction, the automatic conversion instruction set, and the recommended conversion instruction set.

이 때, 상기 프로세서는, 상기 제1 소스에서 상기 제1 아키텍처에서만 사용되는 비호환명령어를 추출하고, 상기 제1 소스에서 상기 제2 아키텍처에서도 사용되는 호환명령어를 추출하고, 상기 호환명령어를 상기 제2 아키텍처에 필수적으로 사용되는 필수호환명령어와 상기 제2 아키텍처에 비필수적으로 사용되는 비필수호환명령어를 구분하고, 상기 비호환명령어 및 상기 비필수호환명령어를 상기 수정명령어로 도출할 수 있다.At this time, the processor extracts an incompatible instruction used only in the first architecture from the first source, extracts a compatible instruction used in the second architecture from the first source, and converts the compatible instruction to the second 2 It is possible to distinguish an essential compatible command essential for the architecture and a non-essential compatible command used for the second architecture, and derive the incompatible command and the non-essential compatible command as the correction command.

이 때, 상기 프로세서는, 상기 비호환명령어, 상기 호환명령어를 기반으로 수정난이도를 산출하고, 상기 수정난이도가 기설정된 임계수정난이도 이하인 경우, 상기 자동변환명령어세트에 대응하는 제1 명령어를 제2 명령어로 자동으로 수정하고, 상기 비호환명령어 및 상기 비필수호환명령어와 상기 비호환명령어 및 상기 비필수호환명령어에 대응하는 상기 추천변환명령어세트를 기반으로 상기 수정요청정보를 생성하고, 상기 수정난이도가 상기 임계수정난이도를 초과하는 경우, 상기 비호환명령어 및 상기 비필수호환명령어와 상기 비호환명령어 및 상기 비필수호환명령어에 대응하는 상기 자동변환명령어세트 및 상기 추천변환명령어세트를 기반으로 상기 수정요청정보를 생성할 수 있다.At this time, the processor calculates the correction difficulty based on the incompatible instruction and the compatible instruction, and when the correction difficulty is less than or equal to a preset critical correction difficulty level, the first instruction corresponding to the automatic conversion instruction set is second Automatically modify the command, and generate the modification request information based on the incompatible command and the non-essential compatible command and the recommended conversion command set corresponding to the incompatible command and the non-essential compatible command, and the revision difficulty When exceeds the critical correction difficulty, the incompatible command and the non-essential compatible command, the automatic conversion instruction set corresponding to the incompatible command and the non-essential compatible command and the recommended conversion instruction set based on the correction You can create request information.

이 때, 상기 수정난이도는 아래 수학식에 의하여 산출되되,At this time, the correction difficulty is calculated by the following equation,

Figure 112022033008136-pat00001
Figure 112022033008136-pat00001

Edit Difficulty는 상기 수정난이도를 의미하고, InCom(InCompatibility)는 비호환명령어의 수를 의미하고, Com(Compatibility)는 호환명령어의 수를 의미하고, NonEss(Non-Essential)는 비필수호환명령어의 수를 의미하고, Ess(Essential)는 필수호환명령어의 수를 의미할 수 있다.Edit Difficulty refers to the difficulty of the correction, InCom (InCompatibility) refers to the number of incompatible instructions, Com (Compatibility) refers to the number of compatible instructions, and NonEss (Non-Essential) refers to the number of non-essential compatible instructions. , and Ess (Essential) may mean the number of essential compatible commands.

이와 같이 본 발명의 일 실시예에 따르면, 특정 아키텍처 기반의 프로그램의 소스를 분석하여 다른 아키텍처 기반의 프로그램으로 변환시키기 위한 소스의 수정부분을 제안할 수 있다.As described above, according to an embodiment of the present invention, it is possible to analyze the source of a program based on a specific architecture and propose a modified part of the source for converting into a program based on another architecture.

본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.The effects obtainable in the present invention are not limited to the above-mentioned effects, and other effects not mentioned may be clearly understood by those of ordinary skill in the art to which the present invention belongs from the following description. will be.

본 발명의 특정한 바람직한 실시예들의 상기에서 설명한 바와 같은 또한 다른 측면들과, 특징들 및 이득들은 첨부 도면들과 함께 처리되는 하기의 설명으로부터 보다 명백하게 될 것이다.
도 1은 본 발명의 일 실시예에 따른 아키텍처 변경을 위한 소스 변환 솔루션 제공 장치의 개념도이다.
도 2는 본 발명의 일 실시예에 따른 전자 장치의 블록도이다.
도 3은 본 발명의 일 실시예에 따른 아키텍처 변경을 위한 소스 변환 솔루션 제공 방법의 흐름도이다.
도 4 내지 6은 본 발명의 일 실시예에 따른 전자 장치의 구성을 설명하기 위한 블록도이다.
상기 도면들을 통해, 유사 참조 번호들은 동일한 혹은 유사한 엘리먼트들과, 특징들 및 구조들을 도시하기 위해 사용된다는 것에 유의해야만 한다.
Other aspects, features and benefits as described above of certain preferred embodiments of the present invention will become more apparent from the following description taken in conjunction with the accompanying drawings.
1 is a conceptual diagram of an apparatus for providing a source conversion solution for architecture change according to an embodiment of the present invention.
2 is a block diagram of an electronic device according to an embodiment of the present invention.
3 is a flowchart of a method for providing a source conversion solution for architecture change according to an embodiment of the present invention.
4 to 6 are block diagrams for explaining the configuration of an electronic device according to an embodiment of the present invention.
It should be noted that throughout the drawings, like reference numerals are used to denote the same or similar elements, features, and structures.

이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings.

실시예를 설명함에 있어서 본 발명이 속하는 기술 분야에 익히 알려져 있고 본 발명과 직접적으로 관련이 없는 기술 내용에 대해서는 설명을 생략한다. 이는 불필요한 설명을 생략함으로써 본 발명의 요지를 흐리지 않고 더욱 명확히 전달하기 위함이다.In describing the embodiments, descriptions of technical contents that are well known in the technical field to which the present invention pertains and are not directly related to the present invention will be omitted. This is to more clearly convey the gist of the present invention without obscuring the gist of the present invention by omitting unnecessary description.

마찬가지 이유로 첨부 도면에 있어서 일부 구성요소는 과장되거나 생략되거나 개략적으로 도시되었다. 또한, 각 구성요소의 크기는 실제 크기를 전적으로 반영하는 것이 아니다. 각 도면에서 동일한 또는 대응하는 구성요소에는 동일한 참조 번호를 부여하였다.For the same reason, some components are exaggerated, omitted, or schematically illustrated in the accompanying drawings. In addition, the size of each component does not fully reflect the actual size. In each figure, the same or corresponding elements are assigned the same reference numerals.

본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시 예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.Advantages and features of the present invention, and a method for achieving them will become apparent with reference to the embodiments described below in detail in conjunction with the accompanying drawings. However, the present invention is not limited to the embodiments disclosed below, but may be implemented in various different forms, and only these embodiments allow the disclosure of the present invention to be complete, and common knowledge in the technical field to which the present invention belongs It is provided to fully inform the possessor of the scope of the invention, and the present invention is only defined by the scope of the claims. Like reference numerals refer to like elements throughout.

이때, 처리 흐름도 도면들의 각 블록과 흐름도 도면들의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도 블록(들)에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 흐름도 블록(들)에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도 블록(들)에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.At this time, it will be understood that each block of the flowchart diagrams and combinations of the flowchart diagrams may be performed by computer program instructions. These computer program instructions may be embodied in a processor of a general purpose computer, special purpose computer, or other programmable data processing equipment, such that the instructions performed by the processor of the computer or other programmable data processing equipment are not described in the flowchart block(s). It creates a means to perform functions. These computer program instructions may also be stored in a computer-usable or computer-readable memory that may direct a computer or other programmable data processing equipment to implement a function in a particular manner, and thus the computer-usable or computer-readable memory. It is also possible that the instructions stored in the flow chart block(s) produce an article of manufacture containing instruction means for performing the function described in the flowchart block(s). The computer program instructions may also be mounted on a computer or other programmable data processing equipment, such that a series of operational steps are performed on the computer or other programmable data processing equipment to create a computer-executed process to create a computer or other programmable data processing equipment. It is also possible that instructions for performing the processing equipment provide steps for performing the functions described in the flowchart block(s).

또한, 각 블록은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실행 예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.Additionally, each block may represent a module, segment, or portion of code that includes one or more executable instructions for executing specified logical function(s). It should also be noted that in some alternative implementations it is also possible for the functions recited in blocks to occur out of order. For example, two blocks shown one after another may be performed substantially simultaneously, or the blocks may sometimes be performed in the reverse order according to a corresponding function.

이 때, 본 실시 예에서 사용되는 '~부'라는 용어는 소프트웨어 또는 FPGA(field-Programmable Gate Array) 또는 ASIC(Application Specific Integrated Circuit)과 같은 하드웨어 구성요소를 의미하며, '~부'는 어떤 역할들을 수행한다. 그렇지만 '~부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '~부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '~부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다. 구성요소들과 '~부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~부'들로 결합되거나 추가적인 구성요소들과 '~부'들로 더 분리될 수 있다. 뿐만 아니라, 구성요소들 및 '~부'들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU들을 재생시키도록 구현될 수도 있다.In this case, the term '~ unit' used in this embodiment means software or hardware components such as field-programmable gate array (FPGA) or ASIC (Application Specific Integrated Circuit), and '~ unit' refers to what role carry out the However, '-part' is not limited to software or hardware. '~' may be configured to reside on an addressable storage medium or may be configured to refresh one or more processors. Accordingly, as an example, '~' indicates components such as software components, object-oriented software components, class components, and task components, and processes, functions, properties, and procedures. , subroutines, segments of program code, drivers, firmware, microcode, circuitry, data, databases, data structures, tables, arrays, and variables. The functions provided in the components and '~ units' may be combined into a smaller number of components and '~ units' or further separated into additional components and '~ units'. In addition, components and '~ units' may be implemented to play one or more CPUs in a device or secure multimedia card.

본 발명의 실시예들을 구체적으로 설명함에 있어서, 특정 시스템의 예를 주된 대상으로 할 것이지만, 본 명세서에서 청구하고자 하는 주요한 요지는 유사한 기술적 배경을 가지는 여타의 통신 시스템 및 서비스에도 본 명세서에 개시된 범위를 크게 벗어나지 아니하는 범위에서 적용 가능하며, 이는 당해 기술분야에서 숙련된 기술적 지식을 가진 자의 판단으로 가능할 것이다.In describing embodiments of the present invention in detail, an example of a specific system will be mainly targeted, but the main subject matter to be claimed in the present specification is to extend the scope disclosed herein to other communication systems and services having a similar technical background. It can be applied within a range that does not deviate significantly, and this will be possible at the discretion of a person with technical knowledge skilled in the art.

이하에서 도면을 참조하여 아키텍처 변경을 위한 소스 변환 솔루션 제공 장치 및 방법에 대하여 설명하도록 한다.Hereinafter, an apparatus and method for providing a source conversion solution for architectural change will be described with reference to the drawings.

도 1은 본 발명의 일 실시예에 따른 아키텍처 변경을 위한 소스 변환 솔루션 제공 장치의 개념도이다.1 is a conceptual diagram of an apparatus for providing a source conversion solution for architecture change according to an embodiment of the present invention.

도 1을 참조하면, 본 발명의 일 실시예에 따른 아키텍처 변경을 위한 소스 변환 솔루션 제공 장치(100)는 특정 아키텍처를 위한 프로그램 소스를 입력받아, 다른 아키텍처에서 사용할 수 있는 프로그램 소스로 변환할 수 있도록, 수정할 부분을 추출하여 사용자에게 알려줄 수 있다.Referring to FIG. 1 , an apparatus 100 for providing a source conversion solution for architecture change according to an embodiment of the present invention receives a program source for a specific architecture and converts it into a program source usable in another architecture. , you can extract the part to be modified and inform the user.

특히, 기존에 일반적으로 사용하고 있는 x86 기반의 프로그램들은 최근 떠오르고 있는 ARM 기반에서 실행되지 않아, ARM 기반으로 프로그램을 새로 개발해야 되는지 시간과 비용이 많이 드는 문제점이 있었다. 이에 본 발명에서는 시간과 비용을 줄이기 위하여 기존 소스에서 변환을 위하여 수정이 필요한 부분을 분석하여 사용자에게 제공하고자 한다.In particular, existing x86-based programs generally do not run on the recently emerging ARM-based programs, so there is a problem in that it is necessary to develop new ARM-based programs, which requires a lot of time and money. Accordingly, in the present invention, in order to reduce time and cost, it is intended to analyze a part that needs to be modified for conversion from an existing source and provide it to the user.

여기서 ARM은 다음과 같은 뜻을 가지고 있다. ARM 홀딩스TM(회사의 원래 이름은 Advanced RISC Machines)는 RISC 프로세서를 설계하고 라이센싱하는 회사로, ARM 아키텍처는 ARM사에 의해 개발한 CPU 디자인의 한 종류이다.Here, ARM has the following meanings. ARM Holdings TM (original name of the company Advanced RISC Machines) is a company that designs and licenses RISC processors. The ARM architecture is a type of CPU design developed by ARM.

x86 또는 80x86은 인텔TM사에서 개발한 마이크로프로세서 계열을 부르는 말이자, 이들과 호환되는 프로세서들에서 사용한 명령어 집합 구조들을 통칭하는 말이다.x86 or 80x86 refers to the microprocessor family developed by Intel TM , and is a generic term for instruction set structures used in processors compatible with them.

보다 상세하게는 도 2를 참조하여 후술하도록 한다.In more detail, it will be described later with reference to FIG. 2 .

도 2는 본 발명의 일 실시예에 따른 전자 장치의 블록도이다.2 is a block diagram of an electronic device according to an embodiment of the present invention.

일 실시예에 따른 전자 장치(100)는 프로세서(110) 및 메모리(120)를 포함한다. 프로세서(110)는 도 1 및 도 2를 통하여 전술한 적어도 하나의 방법을 수행할 수 있다. 메모리(120)는 상술한 방법과 관련된 정보를 저장하거나 상술한 방법이 구현된 프로그램을 저장할 수 있다. 메모리(120)는 휘발성 메모리 또는 비휘발성 메모리일 수 있다. 메모리(120)는 '데이터베이스', '저장부' 등으로 호칭될 수 있다. The electronic device 100 according to an embodiment includes a processor 110 and a memory 120 . The processor 110 may perform at least one method described above with reference to FIGS. 1 and 2 . The memory 120 may store information related to the above-described method or may store a program in which the above-described method is implemented. The memory 120 may be a volatile memory or a non-volatile memory. The memory 120 may be referred to as a 'database' or a 'storage unit'.

프로세서(110)는 프로그램을 실행하고, 전자 장치(100)를 제어할 수 있다. 프로세서(110)에 의하여 실행되는 프로그램의 코드는 메모리(120)에 저장될 수 있다. 장치(100)는 입출력 장치(도면 미 표시)를 통하여 외부 장치(예를 들어, 퍼스널 컴퓨터 또는 네트워크)에 연결되고, 데이터를 교환할 수 있다.The processor 110 may execute a program and control the electronic device 100 . The code of the program executed by the processor 110 may be stored in the memory 120 . The device 100 may be connected to an external device (eg, a personal computer or a network) through an input/output device (not shown) and exchange data.

이 때, 상기 프로세서(110)는 제1 아키텍처에서의 사용을 위한 제1 소스를 분석하여, 제2 아키텍처에서의 사용을 위하여 수정이 필요한 수정명령어를 도출할 수 있다. In this case, the processor 110 may analyze the first source for use in the first architecture, and derive a correction instruction that needs to be corrected for use in the second architecture.

이 때, 상기 제1 소스를 분석하는 방법으로써, 상기 제1 아키텍처에서만 사용되는 명령어인지, 제2 아키텍처에서도 사용되는 명령어인지 우선적으로 구분하여 수정이 필요한 부분을 우선적으로 추출할 수 있다. At this time, as a method of analyzing the first source, it is possible to preferentially extract a part requiring correction by first classifying whether the command is used only in the first architecture or the command used in the second architecture.

보다 상세하게 살펴보면, 상기 프로세서(110)는, 상기 제1 소스에서 상기 제1 아키텍처에서만 사용되는 비호환명령어를 추출하고, 상기 제1 소스에서 상기 제2 아키텍처에서도 사용되는 호환명령어를 추출할 수 있다.In more detail, the processor 110 may extract an incompatible instruction used only in the first architecture from the first source, and extract a compatible instruction used in the second architecture from the first source. .

이를 통하여, 반드시 수정이 필요한 명령어와 일부만 수정이 필요하거나 수정이 아예 필요하지 않은 명령어를 구분할 수 있다.Through this, it is possible to distinguish a command that must be modified from a command that only needs to be partially modified or a command that does not require modification at all.

또한, 상기 호환명령어 중에서도 새로운 아키텍처에 필수적으로 사용되는 명령어라면 일부러 수정을 할 필요가 없다. 따라서, 새로운 아키텍처에 필수적으로 사용되는 명령어인지 분석할 필요가 있다.In addition, among the above compatible instructions, there is no need to intentionally modify if the instruction is essential for a new architecture. Therefore, it is necessary to analyze whether the instruction is essential for the new architecture.

이를 위하여, 상기 프로세서(110)는, 상기 호환명령어를 상기 제2 아키텍처에 필수적으로 사용되는 필수호환명령어와 상기 제2 아키텍처에 비필수적으로 사용되는 비필수호환명령어를 구분할 수 있고, 상기 비호환명령어 및 상기 비필수호환명령어를 수정이 필요한 수정명령어로 도출할 수 있다.To this end, the processor 110 may distinguish the compatible instruction between an essential compatible instruction essential for the second architecture and a non-essential compatible instruction used for the second architecture, and the incompatible instruction and the non-essential compatibility command may be derived as a correction command requiring modification.

이 때, 프로세서(110)는 도출된 상기 수정명령어를 기반으로 수정요청정보를 생성할 수 있다.In this case, the processor 110 may generate the correction request information based on the derived correction command.

이 때, 수정요청정보는 수정명령어를 기반으로 사용자에게 소스 중에서 수정이 필요한 위치 및 어떠한 명령어로 수정해야 되는지에 대한 안내를 포함할 수 있다. 이와 관련해서는 후술하도록 한다.In this case, the correction request information may include a guide to the user on the basis of the correction command, a location in the source that needs to be corrected, and which command should be modified. In this regard, it will be described later.

이 때, 프로세서(110)는 상기 제1 소스 및 상기 수정요청정보를 출력(output)할 수 있다. 사용자에게 상기 제1 소스에서 어떤 부분을 수정해야 하는지에 대한 상기 수정요청정보를 함께 제공함으로써, 제2 아키텍처를 위한 프로그램 개발에 필요한 시간과 비용을 절약할 수 있다.In this case, the processor 110 may output the first source and the modification request information. By providing the user with the modification request information on which part of the first source should be modified, time and cost required for developing a program for the second architecture can be saved.

이 때, 프로세서(110)는, 상기 수정요청정보를 기반으로 수정된 제2 소스를 입력받을 수 있다. 상기 제2 소스는 사용자가 상기 제1 소스 및 상기 수정요청정보를 반영하여 수정한 소스일 수 있다.In this case, the processor 110 may receive the second source modified based on the modification request information. The second source may be a source modified by a user by reflecting the first source and the modification request information.

이후, 사용자가 직접 수정한 상기 제2 소스와 기존 제1 소스의 차이점을 분석하여 수정요청정보를 생성할 때, 보다 정확성을 향상시킬 수 있다.Thereafter, when the correction request information is generated by analyzing the difference between the second source directly modified by the user and the existing first source, accuracy can be further improved.

이 때, 프로세서(110)는, 상기 제2 소스를 기반으로 상기 제2 아키텍처를 위하여 컴파일(compile)할 수 있다. 이는 프로그램 실행 및 버그확인을 위함이다.In this case, the processor 110 may compile for the second architecture based on the second source. This is for program execution and bug checking.

사용자에게 수정요청정보를 제공할 때, 변경이 필요한 부분과 어떠한 방식으로 변경을 해야하는지도 함께 제공해야 한다. 이를 위하여, 프로세서(110)는, 기존 사용자들이 기존 소스에서 특정 명령어를 어떤 명령어로 수정했는지에 대한 데이터를 수집하고, 수집된 데이터를 분석하여 수정 방향에 대한 추천을 제안할 수 있다.When providing modification request information to the user, the part that needs to be changed and how to change it must also be provided. To this end, the processor 110 may collect data on which instructions the existing users have modified a specific instruction from an existing source, analyze the collected data, and suggest a recommendation for a correction direction.

이를 위하여, 상기 프로세서(110)는, 상기 제1 소스 및 상기 제2 소스의 차이점에 기반하여 변경 전 제1 소스에 포함되는 제1 명령어 및 변경 후 제2 소스에 포함되는 제2 명령어를 포함하는 수정명령어세트를 생성하여 데이터베이스에 저장할 수 있다. To this end, the processor 110 includes a first instruction included in the first source before the change and a second instruction included in the second source after the change based on the difference between the first source and the second source You can create an edit instruction set and store it in the database.

상기 데이터베이스는 상기 사용자 뿐만 아니라 본 발명을 이용하는 모든 사용자들의 수정명령어세트를 저장할 수 있다.The database may store the correction instruction set of all users who use the present invention as well as the user.

이 때, 상기 프로세서(110)는, 상기 데이터베이스에 저장된 상기 수정명령어세트를 상기 제1 명령어에 기반하여 카운팅할 수 있고, 카운팅 결과에 기반하여, 카운팅 수가 기설정된 임계카운팅수를 초과하는 경우, 해당 제1 명령어가 포함되는 상기 수정명령어세트를 자동변환명령어세트로 설정할 수 있다.At this time, the processor 110 may count the correction instruction set stored in the database based on the first instruction, and based on the counting result, if the counting number exceeds a preset threshold counting number, the corresponding The correction instruction set including the first instruction may be set as an automatic conversion instruction set.

이는, 제1 명령어에 기반하는 수정명령어세트의 수가 많으면 많을수록 많은 사용자들이 수정했다는 것을 의미하고, 또한, 수정명령어세트대로 수정하는 것이 안정적이라는 것을 의미할 수 있기 때문이다. 따라서, 해당 수정명령어세트를 상기 자동변환명령어세트로 설정하여, 추후 수정요청정보를 생성할 때, 수정난이도에 따라 자동으로 변환시킬 수도 있다. 이와 관련해서는 후술하도록 한다.This is because, as the number of the correction instruction set based on the first instruction increases, it means that more users have modified it, and it may also mean that it is stable to modify according to the correction instruction set based on the first instruction. Accordingly, by setting the corresponding correction instruction set as the automatic conversion instruction set, when generating correction request information later, it may be automatically converted according to the correction difficulty. In this regard, it will be described later.

이 때, 상기 임계카운팅수는 상기 제1 명령어의 총 사용량 대비 상기 수정명령어세트로 사용된 사용량이 절반 이상되는 수치로 (프로세서(110)에 의해) 설정될 수 있다.In this case, the threshold counting number may be set (by the processor 110 ) to a value in which the usage amount used as the correction instruction set is more than half compared to the total usage amount of the first instruction.

또한, 상기 프로세서(110)는, 카운팅 결과에 기반하여, 카운팅 수가 기설정된 임계카운팅수 이하인 경우, 해당 제1 명령어가 포함되는 상기 수정명령어세트를 추천변환명령어세트로 설정할 수 있다. 이를 통해, 사용자는 제1 명령어를 어떠한 명령어로 수정하면 좋을지 용이하게 판단할 수 있다.In addition, the processor 110, based on the counting result, when the counting number is less than or equal to a preset threshold counting number, the correction instruction set including the first instruction may be set as a recommended conversion instruction set. Through this, the user can easily determine which command should be used to modify the first command.

또한, 상기 프로세서(110)는, 상기 수정명령어, 상기 자동변환명령어세트 및 상기 추천변환명령어세트를 기반으로 상기 수정요청정보를 생성할 수 있다.In addition, the processor 110 may generate the correction request information based on the correction instruction, the automatic conversion instruction set, and the recommended conversion instruction set.

또한, 상기 수정요청정보를 생성할 때, 수정난이도를 산출하여 수정난이도가 쉬운 경우 일부 자동으로 수정한 이후에 생성하는 것이 사용자 편의성에 보다 바람직하다. In addition, when generating the correction request information, it is more preferable for user convenience to generate the correction request information after calculating the correction difficulty level and automatically correcting the part if the correction difficulty level is easy.

이를 위하여, 상기 프로세서(110)는, 수정의 난이도를 판단하기 위하여, 상기 비호환명령어, 상기 호환명령어를 기반으로 수정난이도를 산출할 수 있다.To this end, in order to determine the difficulty of correction, the processor 110 may calculate the difficulty of correction based on the incompatible instruction and the compatible instruction.

간략하게 설명하면, 제1 아키텍처에서만 사용되는 명령어는 제2 아키텍처에서 사용될 수 없으므로, 새로운 명령어로 수정이 필요하다. 따라서, 제1 아키텍처에서만 사용되는 명령어가 많으면 많을수록 수정난이도가 어려워지고, 제2 아키텍처에 호환되는 명령어 중에서 제2 아키텍처에 필수로 들어가는 명령어는 따로 수정이 필요가 없으므로, 필수로 들어가는 명령어가 많으면 많을수록 수정난이도가 낮아진다고 판단할 수 있다.Briefly, an instruction used only in the first architecture cannot be used in the second architecture, so a modification is required with a new instruction. Therefore, the more instructions used only in the first architecture, the more difficult the modification difficulty becomes, and among the instructions compatible with the second architecture, there is no need to separately modify the instructions that are essential to the second architecture. It can be judged that the difficulty is lowered.

이에, 상기 수정난이도는 아래 수학식 1을 토대로 프로세서(110)에 의하여 산출될 수 있다.Accordingly, the correction difficulty may be calculated by the processor 110 based on Equation 1 below.

[수학식 1][Equation 1]

Figure 112022033008136-pat00002
Figure 112022033008136-pat00002

이 때, Edit Difficulty는 상기 수정난이도를 의미하고, InCom(InCompatibility)는 (제1 아키텍처에서만 사용 가능한) 비호환명령어의 수를 의미하고, Com(Compatibility)는 (제1 아키텍처 및 제2 아키텍처에서 모두 사용 가능한) 호환명령어의 수를 의미하고, NonEss(Non-Essential)는 비필수호환명령어의 수를 의미하고, Ess(Essential)는 (상기 제2 아키텍처에 필수적으로 사용되는) 필수호환명령어의 수를 의미할 수 있다.In this case, Edit Difficulty means the modification difficulty, InCom(InCompatibility) means the number of incompatible instructions (available only in the first architecture), and Com (Compatibility) means (in both the first architecture and the second architecture) means the number of compatible instructions (available), NonEss (Non-Essential) means the number of non-essential compatible instructions, and Ess (Essential) indicates the number of essential compatible instructions (essentially used in the second architecture). can mean

이를 통하여, 모든 수정난이도를 균일한 기준으로 평가할 수 있다.Through this, it is possible to evaluate all fertilization difficulties on a uniform basis.

또한, 상기 프로세서(110)는, 상기 수정난이도가 기설정된 임계수정난이도 이하인 경우, 상기 자동변환명령어세트에 대응하는 제1 명령어를 제2 명령어로 자동으로 수정하고, 상기 비호환명령어 및 상기 비필수호환명령어와 상기 비호환명령어 및 상기 비필수호환명령어에 대응하는 상기 추천변환명령어세트를 기반으로 상기 수정요청정보를 생성할 수 있다.In addition, the processor 110, when the correction difficulty is less than or equal to a preset critical correction difficulty, automatically corrects the first instruction corresponding to the automatic conversion instruction set to a second instruction, and the incompatible instruction and the non-essential The modification request information may be generated based on a compatible command and the recommended conversion command set corresponding to the non-compatible command and the non-essential compatible command.

또한, 상기 프로세서(110)는 상기 수정난이도가 상기 임계수정난이도를 초과하는 경우, 상기 비호환명령어 및 상기 비필수호환명령어와 상기 비호환명령어 및 상기 비필수호환명령어에 대응하는 상기 자동변환명령어세트 및 상기 추천변환명령어세트를 기반으로 상기 수정요청정보를 생성하는 것을 특징으로 하는 전자 장치.In addition, the processor 110, when the correction difficulty exceeds the threshold correction difficulty, the incompatible instruction and the non-essential compatible instruction and the incompatible instruction and the non-essential compatible instruction The automatic conversion instruction set corresponding to the instruction and generating the modification request information based on the recommended conversion instruction set.

즉, 수정난이도가 낮으면, 기존 사용자들이 자주 변환을 했던 상기 자동변환명령어세트에 의한 변환을 자동을 실행하여 사용자의 수정시간을 절약할 수 있다. 또한, 수정난이도가 높더라도, 상기 자동변환명령어세트와 상기 추천변환명령어세트를 함께 수정요청정보로써 제공함으로써, 사용자는 제1 명령어에 대응하는 제2 명령어를 선택하는 방식으로 수정할 수도 있다.That is, when the correction difficulty is low, the user's correction time can be saved by automatically executing the conversion by the automatic conversion instruction set, which was frequently converted by existing users. In addition, even if the correction difficulty is high, by providing the automatic conversion instruction set and the recommended conversion instruction set together as correction request information, the user may modify in a way that selects the second instruction corresponding to the first instruction.

삭제delete

도 3은 본 발명의 일 실시예에 따른 아키텍처 변경을 위한 소스 변환 솔루션 제공 방법의 흐름도이다.3 is a flowchart of a method for providing a source conversion solution for architecture change according to an embodiment of the present invention.

도 3을 참조하면, 본 발명의 일 실시예에 따라 전자 장치에 의하여 수행되는 아키텍처 변경을 위한 소스 변환 솔루션 제공 방법은 제1 아키텍처에서의 사용을 위한 제1 소스를 분석하여, 제2 아키텍처에서의 사용을 위하여 수정이 필요한 수정명령어를 도출하는 단계(S201), 도출된 상기 수정명령어를 기반으로 수정요청정보를 생성하는 단계(S203) 및 상기 제1 소스 및 상기 수정요청정보를 출력하는 단계(S205)를 포함할 수 있다.Referring to FIG. 3 , in a method of providing a source conversion solution for an architecture change performed by an electronic device according to an embodiment of the present invention, a first source for use in a first architecture is analyzed, and a first source for use in a first architecture is analyzed. Deriving a correction command that needs to be corrected for use (S201), generating correction request information based on the derived correction command (S203), and outputting the first source and the correction request information (S205) ) may be included.

또한, 본 발명의 일 실시예에 따라 전자 장치에 의하여 수행되는 아키텍처 변경을 위한 소스 변환 솔루션 제공 방법은 상기 수정요청정보를 기반으로 수정된 제2 소스를 입력받는 단계 및 상기 제2 소스를 기반으로 상기 제2 아키텍처를 위하여 컴파일하는 단계를 더 포함할 수 있다.In addition, according to an embodiment of the present invention, a method for providing a source conversion solution for an architecture change performed by an electronic device includes receiving a second source modified based on the modification request information and based on the second source Compiling for the second architecture may be further included.

또한, 본 발명의 일 실시예에 따라 전자 장치에 의하여 수행되는 아키텍처 변경을 위한 소스 변환 솔루션 제공 방법은 상기 제1 소스 및 상기 제2 소스의 차이점에 기반하여 변경 전 제1 소스에 포함되는 제1 명령어 및 변경 후 제2 소스에 포함되는 제2 명령어를 포함하는 수정명령어세트를 생성하여 데이터베이스에 저장하는 단계, 상기 데이터베이스에 저장된 상기 수정명령어세트를 상기 제1 명령어에 기반하여 카운팅하는 단계, 카운팅 결과에 기반하여, 카운팅 수가 기설정된 임계카운팅수를 초과하는 경우, 해당 제1 명령어가 포함되는 상기 수정명령어세트를 자동변환명령어세트로 설정하는 단계 및 카운팅 결과에 기반하여, 카운팅 수가 기설정된 임계카운팅수 이하인 경우, 해당 제1 명령어가 포함되는 상기 수정명령어세트를 추천변환명령어세트로 설정하는 단계를 더 포함할 수 있다.In addition, according to an embodiment of the present invention, in the method for providing a source conversion solution for an architecture change performed by an electronic device, the first source included in the first source before the change is based on the difference between the first source and the second source. generating and storing in a database a correction instruction set including an instruction and a second instruction included in a second source after change; counting the correction instruction instruction set stored in the database based on the first instruction; Counting result Based on the step of, when the counting number exceeds the preset threshold counting number, setting the correction instruction word set including the first instruction as an automatic conversion instruction set In the following cases, the method may further include setting the correction instruction set including the first instruction as a recommended conversion instruction set.

이 때, 상기 수정요청정보를 생성하는 단계(S203)는, 상기 수정명령어, 상기 자동변환명령어세트 및 상기 추천변환명령어세트를 기반으로 상기 수정요청정보를 생성할 수 있다.In this case, the step of generating the modification request information (S203) may generate the modification request information based on the modification command, the automatic conversion command set, and the recommended conversion command set.

이 때, 상기 수정이 필요한 수정명령어를 도출하는 단계(S201)는, 상기 제1 소스에서 상기 제1 아키텍처에서만 사용되는 비호환명령어를 추출하는 단계, 상기 제1 소스에서 상기 제2 아키텍처에서도 사용되는 호환명령어를 추출하는 단계, 상기 호환명령어를 상기 제2 아키텍처에 필수적으로 사용되는 필수호환명령어와 상기 제2 아키텍처에 비필수적으로 사용되는 비필수호환명령어를 구분하는 단계 및 상기 비호환명령어 및 상기 비필수호환명령어를 상기 수정명령어로 도출하는 단계를 포함할 수 있다.At this time, the step (S201) of deriving the correction instruction that needs to be corrected is a step of extracting an incompatible instruction used only in the first architecture from the first source, and is also used in the second architecture from the first source. extracting a compatible command, distinguishing the compatible command between essential compatible commands essential for the second architecture and non-essential compatible commands used for non-essentially used in the second architecture, and the incompatible commands and the non It may include deriving an essential compatible command as the correction command.

이 때, 상기 필수호환명령어는 상기 데이터베이스에 저장되어 있는 상기 제2 아키텍처용 프로그램 소스에 기설정된 필수임계비율 이상 사용되고 있는 명령어일 수 있다. 이는 상기 제2 아키텍처에 대부분 사용되고 있는 명령어의 경우 따로 수정이 필요없기 때문에 사전에 구분하는 것이다. 따라서, 상기 필수임계비율은 90%로 설정됨이 바람직하다. 이 때, 상기 필수호환명령어를 제외한 나머지 명령어는 비필수호환명령어로 설정될 수 있다.In this case, the essential compatible command may be a command that is used above a preset essential threshold ratio in the program source for the second architecture stored in the database. This is to classify the commands mostly used in the second architecture in advance because there is no need for separate modification. Therefore, the essential critical ratio is preferably set to 90%. In this case, commands other than the essential compatible commands may be set as non-essential compatible commands.

이 때, 상기 수정요청정보를 생성하는 단계(S203)는, 상기 비호환명령어, 상기 호환명령어를 기반으로 수정난이도를 산출하는 단계, 상기 수정난이도가 기설정된 임계수정난이도 이하인 경우, 상기 자동변환명령어세트에 대응하는 제1 명령어를 제2 명령어로 자동으로 수정하고, 상기 비호환명령어 및 상기 비필수호환명령어와 상기 비호환명령어 및 상기 비필수호환명령어에 대응하는 상기 추천변환명령어세트를 기반으로 상기 수정요청정보를 생성하는 단계 및 상기 수정난이도가 상기 임계수정난이도를 초과하는 경우, 상기 비호환명령어 및 상기 비필수호환명령어와 상기 비호환명령어 및 상기 비필수호환명령어에 대응하는 상기 자동변환명령어세트 및 상기 추천변환명령어세트를 기반으로 상기 수정요청정보를 생성하는 단계를 포함할 수 있다.In this case, the step of generating the correction request information (S203) is a step of calculating the correction difficulty based on the incompatible command and the compatible command, and when the correction difficulty is less than or equal to a preset threshold correction difficulty, the automatic conversion command Automatically modify a first instruction corresponding to a set into a second instruction, and based on the incompatible instruction and the non-essential compatible instruction and the recommended conversion instruction set corresponding to the incompatible instruction and the non-essential compatible instruction. generating correction request information, and when the correction difficulty exceeds the threshold correction difficulty level, the incompatible command and the non-essential compatible command and the incompatible command and the non-essential compatible command The automatic conversion instruction set corresponding to the non-essential compatible command and generating the modification request information based on the recommended conversion instruction set.

이 때, 상기 수정난이도는 아래 수학식에 의하여 산출되되,At this time, the correction difficulty is calculated by the following equation,

Figure 112022033008136-pat00003
Figure 112022033008136-pat00003

Edit Difficulty는 상기 수정난이도를 의미하고, InCom(InCompatibility)는 비호환명령어의 수를 의미하고, Com(Compatibility)는 호환명령어의 수를 의미하고, NonEss(Non-Essential)는 비필수호환명령어의 수를 의미하고, Ess(Essential)는 필수호환명령어의 수를 의미할 수 있다.Edit Difficulty refers to the difficulty of the correction, InCom (InCompatibility) refers to the number of incompatible instructions, Com (Compatibility) refers to the number of compatible instructions, and NonEss (Non-Essential) refers to the number of non-essential compatible instructions. , and Ess (Essential) may mean the number of essential compatible commands.

도 4 내지 6은 본 발명의 일 실시예에 따른 전자 장치의 구성을 설명하기 위한 블록도이다.4 to 6 are block diagrams for explaining the configuration of an electronic device according to an embodiment of the present invention.

본 발명의 일 실시예에 따른 아키텍처 변경을 위한 소스 변환 솔루션 제공 장치(100)는 도 4 내지 6을 토대로 설명되는 전자 장치에 대응될 수 있다.The apparatus 100 for providing a source conversion solution for architecture change according to an embodiment of the present invention may correspond to the electronic device described with reference to FIGS. 4 to 6 .

본 문서의 다양한 실시예들에 따른 전자 장치는, 예를 들면, 스마트폰, 태블릿 PC, 이동 전화기, 영상 전화기, 전자책 리더기, 데스크탑 PC, 랩탑 PC, 넷북 컴퓨터, 워크스테이션, 서버, PDA, PMP(portable multimedia player), MP3 플레이어, 의료기기, 카메라, 또는 웨어러블 장치 중 적어도 하나를 포함할 수 있다. 웨어러블 장치는 액세서리형(예: 시계, 반지, 팔찌, 발찌, 목걸이, 안경, 콘택트 렌즈, 또는 머리 착용형 장치(head-mounted-device(HMD)), 직물 또는 의류 일체형(예: 전자 의복), 신체 부착형(예: 스킨 패드 또는 문신), 또는 생체 이식형 회로 중 적어도 하나를 포함할 수 있다. 어떤 실시예들에서, 전자 장치는, 예를 들면, 텔레비전, DVD(digital video disk) 플레이어, 오디오, 냉장고, 에어컨, 청소기, 오븐, 전자레인지, 세탁기, 공기 청정기, 셋톱 박스, 홈 오토매이션 컨트롤 패널, 보안 컨트롤 패널, 미디어 박스(예: 삼성 HomeSyncTM, 애플TVTM, 또는 구글 TVTM), 게임 콘솔(예: XboxTM, PlayStationTM), 전자 사전, 전자 키, 캠코더, 또는 전자 액자 중 적어도 하나를 포함할 수 있다.The electronic device according to various embodiments of the present disclosure may include, for example, a smartphone, a tablet PC, a mobile phone, a video phone, an e-book reader, a desktop PC, a laptop PC, a netbook computer, a workstation, a server, a PDA, and a PMP. It may include at least one of a portable multimedia player, an MP3 player, a medical device, a camera, and a wearable device. A wearable device may be an accessory (e.g., watch, ring, bracelet, anklet, necklace, eyewear, contact lens, or head-mounted-device (HMD)), a textile or clothing integral (e.g. electronic garment); It may include at least one of a body mountable (eg skin pad or tattoo) or bioimplantable circuit In some embodiments, the electronic device may include, for example, a television, a digital video disk (DVD) player; Audio, refrigerator, air conditioner, vacuum cleaner, oven, microwave oven, washing machine, air purifier, set-top box, home automation control panel, security control panel, media box (eg Samsung HomeSync TM , Apple TV TM , or Google TV TM ) , a game console (eg, Xbox TM , PlayStation TM ), an electronic dictionary, an electronic key, a camcorder, or an electronic picture frame.

다른 실시예에서, 전자 장치는, 각종 의료기기(예: 각종 휴대용 의료측정기기(혈당 측정기, 심박 측정기, 혈압 측정기, 또는 체온 측정기 등), MRA(magnetic resonance angiography), MRI(magnetic resonance imaging), CT(computed tomography), 촬영기, 또는 초음파기 등), 네비게이션 장치, 위성 항법 시스템(GNSS(global navigation satellite system)), EDR(event data recorder), FDR(flight data recorder), 자동차 인포테인먼트 장치, 선박용 전자 장비(예: 선박용 항법 장치, 자이로 콤파스 등), 항공 전자기기(avionics), 보안 기기, 차량용 헤드 유닛(head unit), 산업용 또는 가정용 로봇, 드론(drone), 금융 기관의 ATM, 상점의 POS(point of sales), 또는 사물 인터넷 장치 (예: 전구, 각종 센서, 스프링클러 장치, 화재 경보기, 온도조절기, 가로등, 토스터, 운동기구, 온수탱크, 히터, 보일러 등) 중 적어도 하나를 포함할 수 있다. 어떤 실시예에 따르면, 전자 장치는 가구, 건물/구조물 또는 자동차의 일부, 전자 보드(electronic board), 전자 사인 수신 장치(electronic signature receiving device), 프로젝터, 또는 각종 계측 기기(예: 수도, 전기, 가스, 또는 전파 계측 기기 등) 중 적어도 하나를 포함할 수 있다. 다양한 실시예에서, 전자 장치는 플렉서블하거나, 또는 전술한 다양한 장치들 중 둘 이상의 조합일 수 있다. 본 문서의 실시예에 따른 전자 장치는 전술한 기기들에 한정되지 않는다. 본 문서에서, 사용자라는 용어는 전자 장치를 사용하는 사람 또는 전자 장치를 사용하는 장치(예: 인공지능 전자 장치)를 지칭할 수 있다. In another embodiment, the electronic device may include various medical devices (eg, various portable medical measuring devices (eg, a blood glucose monitor, a heart rate monitor, a blood pressure monitor, or a body temperature monitor), magnetic resonance angiography (MRA), magnetic resonance imaging (MRI), CT (computed tomography), imager, or ultrasound machine, etc.), navigation device, global navigation satellite system (GNSS), event data recorder (EDR), flight data recorder (FDR), automotive infotainment device, marine electronic equipment (e.g. navigation devices for ships, gyro compasses, etc.), avionics, security devices, head units for vehicles, industrial or household robots, drones, ATMs in financial institutions, point of sale (POS) in stores of sales) or IoT devices (eg, light bulbs, various sensors, sprinkler devices, fire alarms, thermostats, street lights, toasters, exercise equipment, hot water tanks, heaters, boilers, etc.). According to some embodiments, the electronic device is a piece of furniture, building/structure or automobile, an electronic board, an electronic signature receiving device, a projector, or various measuring devices (eg, water, electricity, gas, or a radio wave measuring device). In various embodiments, the electronic device may be flexible or a combination of two or more of the various devices described above. The electronic device according to the embodiment of the present document is not limited to the above-described devices. In this document, the term user may refer to a person who uses an electronic device or a device (eg, an artificial intelligence electronic device) using the electronic device.

또한 전자 장치는 버스, 프로세서, 메모리, 입출력 인터페이스, 디스플레이, 및 통신 인터페이스를 포함할 수 있다. 어떤 실시예에서는, 전자 장치는, 구성요소들 중 적어도 하나를 생략하거나 다른 구성요소를 추가적으로 구비할 수 있다. 버스는 구성요소들을 서로 연결하고, 구성요소들 간의 통신(예: 제어 메시지 또는 데이터)을 전달하는 회로를 포함할 수 있다. 프로세서는, 중앙처리장치, 어플리케이션 프로세서, 또는 커뮤니케이션 프로세서(communication processor(CP)) 중 하나 또는 그 이상을 포함할 수 있다. 프로세서는, 예를 들면, 전자 장치의 적어도 하나의 다른 구성요소들의 제어 및/또는 통신에 관한 연산이나 데이터 처리를 실행할 수 있다.In addition, the electronic device may include a bus, a processor, a memory, an input/output interface, a display, and a communication interface. In some embodiments, the electronic device may omit at least one of the components or may additionally include other components. A bus may include circuitry that connects components to each other and transmits communications (eg, control messages or data) between components. The processor may include one or more of a central processing unit, an application processor, and a communication processor (CP). The processor may, for example, execute an operation or data processing related to control and/or communication of at least one other component of the electronic device.

메모리는, 휘발성 및/또는 비휘발성 메모리를 포함할 수 있다. 메모리는, 예를 들면, 전자 장치의 적어도 하나의 다른 구성요소에 관계된 명령 또는 데이터를 저장할 수 있다. 한 실시예에 따르면, 메모리는 소프트웨어 및/또는 프로그램을 저장할 수 있다. 프로그램은, 예를 들면, 커널, 미들웨어, 어플리케이션 프로그래밍 인터페이스(API), 및/또는 어플리케이션 프로그램(또는 "어플리케이션") 등을 포함할 수 있다. 커널, 미들웨어, 또는 API의 적어도 일부는, 운영 시스템으로 지칭될 수 있다. 커널은, 예를 들면, 다른 프로그램들(예: 미들웨어, API, 또는 어플리케이션 프로그램)에 구현된 동작 또는 기능을 실행하는 데 사용되는 시스템 리소스들(예: 버스, 프로세서, 또는 메모리 등)을 제어 또는 관리할 수 있다. 또한, 커널은 미들웨어, API, 또는 어플리케이션 프로그램에서 전자 장치의 개별 구성요소에 접근함으로써, 시스템 리소스들을 제어 또는 관리할 수 있는 인터페이스를 제공할 수 있다. Memory may include volatile and/or non-volatile memory. The memory may store, for example, commands or data related to at least one other component of the electronic device. According to one embodiment, the memory may store software and/or programs. A program may include, for example, a kernel, middleware, an application programming interface (API), and/or an application program (or "application"), and the like. At least a portion of the kernel, middleware, or API may be referred to as an operating system. The kernel controls or controls system resources (eg, bus, processor, or memory, etc.) used to execute an operation or function implemented in, for example, other programs (eg, middleware, API, or application program). can manage In addition, the kernel may provide an interface capable of controlling or managing system resources by accessing individual components of the electronic device from middleware, API, or application programs.

미들웨어는, 예를 들면, API 또는 어플리케이션 프로그램이 커널과 통신하여 데이터를 주고받을 수 있도록 중개 역할을 수행할 수 있다. 또한, 미들웨어는 어플리케이션 프로그램으로부터 수신된 하나 이상의 작업 요청들을 우선 순위에 따라 처리할 수 있다. 예를 들면, 미들웨어는 어플리케이션 프로그램 중 적어도 하나에 전자 장치의 시스템 리소스(예: 버스, 프로세서, 또는 메모리 등)를 사용할 수 있는 우선 순위를 부여하고, 상기 하나 이상의 작업 요청들을 처리할 수 있다. API는 어플리케이션이 커널 또는 미들웨어에서 제공되는 기능을 제어하기 위한 인터페이스로, 예를 들면, 파일 제어, 창 제어, 영상 처리, 또는 문자 제어 등을 위한 적어도 하나의 인터페이스 또는 함수(예: 명령어)를 포함할 수 있다. 입출력 인터페이스는, 예를 들면, 사용자 또는 다른 외부 기기로부터 입력된 명령 또는 데이터를 전자 장치의 다른 구성요소(들)에 전달하거나, 또는 전자 장치의 다른 구성요소(들)로부터 수신된 명령 또는 데이터를 사용자 또는 다른 외부 기기로 출력할 수 있다. The middleware may, for example, play an intermediary role so that an API or an application program can communicate with the kernel to send and receive data. In addition, the middleware may process one or more work requests received from the application program according to priority. For example, the middleware may give priority to at least one of the application programs to use a system resource (eg, a bus, a processor, a memory, etc.) of the electronic device, and process the one or more work requests. API is an interface for an application to control functions provided by the kernel or middleware, and includes at least one interface or function (eg, command) for, for example, file control, window control, image processing, or character control. can do. The input/output interface, for example, transmits commands or data input from a user or other external device to other component(s) of the electronic device, or receives commands or data received from other component(s) of the electronic device It can be output to the user or other external device.

디스플레이는, 예를 들면, 액정 디스플레이(LCD), 발광 다이오드(LED) 디스플레이, 유기 발광 다이오드(OLED) 디스플레이, 또는 마이크로 전자기계 시스템(MEMS) 디스플레이, 또는 전자종이(electronic paper) 디스플레이를 포함할 수 있다. 디스플레이는, 예를 들면, 사용자에게 각종 콘텐츠(예: 텍스트, 이미지, 비디오, 아이콘, 및/또는 심볼 등)을 표시할 수 있다. 디스플레이는, 터치 스크린을 포함할 수 있으며, 예를 들면, 전자 펜 또는 사용자의 신체의 일부를 이용한 터치, 제스쳐, 근접, 또는 호버링 입력을 수신할 수 있다. 통신 인터페이스는, 예를 들면, 전자 장치와 외부 장치(예: 제1 외부 전자 장치, 제2 외부 전자 장치, 또는 서버) 간의 통신을 설정할 수 있다. 예를 들면, 통신 인터페이스는 무선 통신 또는 유선 통신을 통해서 네트워크에 연결되어 외부 장치(예: 제2 외부 전자 장치 또는 서버)와 통신할 수 있다.The display may include, for example, a liquid crystal display (LCD), a light emitting diode (LED) display, an organic light emitting diode (OLED) display, or a microelectromechanical system (MEMS) display, or an electronic paper display. have. The display may, for example, present various content (eg, text, images, video, icons, and/or symbols, etc.) to the user. The display may include a touch screen, and may receive, for example, a touch, gesture, proximity, or hovering input using an electronic pen or a part of the user's body. The communication interface may establish, for example, communication between the electronic device and an external device (eg, a first external electronic device, a second external electronic device, or a server). For example, the communication interface may be connected to a network through wireless communication or wired communication to communicate with an external device (eg, a second external electronic device or a server).

무선 통신은, 예를 들면, LTE, LTE-A(LTE Advance), CDMA(code division multiple access), WCDMA(wideband CDMA), UMTS(universal mobile telecommunications system), WiBro(Wireless Broadband), 또는 GSM(Global System for Mobile Communications) 등 중 적어도 하나를 사용하는 셀룰러 통신을 포함할 수 있다. 한 실시예에 따르면, 무선 통신은, 예를 들면, WiFi(wireless fidelity), 블루투스, 블루투스 저전력(BLE), 지그비(Zigbee), NFC(near field communication), 자력 시큐어 트랜스미션(Magnetic Secure Transmission), 라디오 프리퀀시(RF), 또는 보디 에어리어 네트워크(BAN) 중 적어도 하나를 포함할 수 있다. 한실시예에 따르면, 무선 통신은 GNSS를 포함할 수 있다. GNSS는, 예를 들면, GPS(Global Positioning System), Glonass(Global Navigation Satellite System), Beidou Navigation Satellite System(이하 "Beidou") 또는 Galileo, the European global satellite-based navigation system일 수 있다. 이하, 본 문서에서는, "GPS"는 "GNSS"와 상호 호환적으로 사용될 수 있다. 유선 통신은, 예를 들면, USB(universal serial bus), HDMI(high definition multimedia interface), RS-232(recommended standard232), 전력선 통신, 또는 POTS(plain old telephone service) 등 중 적어도 하나를 포함할 수 있다. 네트워크는 텔레커뮤니케이션 네트워크, 예를 들면, 컴퓨터 네트워크(예: LAN 또는 WAN), 인터넷, 또는 텔레폰 네트워크 중 적어도 하나를 포함할 수 있다.Wireless communication is, for example, LTE, LTE Advance (LTE-A), CDMA (code division multiple access), WCDMA (wideband CDMA), UMTS (universal mobile telecommunications system), WiBro (Wireless Broadband), or GSM (Global System for Mobile Communications) and the like may include cellular communication using at least one. According to one embodiment, wireless communication is, for example, wireless fidelity (WiFi), Bluetooth, Bluetooth low energy (BLE), Zigbee (Zigbee), near field communication (NFC), magnetic secure transmission (Magnetic Secure Transmission), radio It may include at least one of a frequency (RF) or a body area network (BAN). According to one embodiment, the wireless communication may include GNSS. The GNSS may be, for example, a Global Positioning System (GPS), a Global Navigation Satellite System (Glonass), a Beidou Navigation Satellite System (hereinafter, “Beidou”) or Galileo, the European global satellite-based navigation system. Hereinafter, in this document, "GPS" may be used interchangeably with "GNSS". Wired communication may include, for example, at least one of universal serial bus (USB), high definition multimedia interface (HDMI), recommended standard232 (RS-232), power line communication, or plain old telephone service (POTS). have. The network may include at least one of a telecommunications network, for example, a computer network (eg, a LAN or WAN), the Internet, or a telephone network.

제1 및 제2 외부 전자 장치 각각은 전자 장치와 동일한 또는 다른 종류의 장치일 수 있다. 다양한 실시예에 따르면, 전자 장치에서 실행되는 동작들의 전부 또는 일부는 다른 하나 또는 복수의 전자 장치(예: 전자 장치, 또는 서버에서 실행될 수 있다. 한 실시예에 따르면, 전자 장치가 어떤 기능이나 서비스를 자동으로 또는 요청에 의하여 수행해야 할 경우에, 전자 장치는 기능 또는 서비스를 자체적으로 실행시키는 대신에 또는 추가적으로, 그와 연관된 적어도 일부 기능을 다른 장치(예: 전자 장치, 또는 서버)에게 요청할 수 있다. 다른 전자 장치(예: 전자 장치, 또는 서버)는 요청된 기능 또는 추가 기능을 실행하고, 그 결과를 전자 장치로 전달할 수 있다. 전자 장치는 수신된 결과를 그대로 또는 추가적으로 처리하여 요청된 기능이나 서비스를 제공할 수 있다. 이를 위하여, 예를 들면, 클라우드 컴퓨팅, 분산 컴퓨팅, 또는 클라이언트-서버 컴퓨팅 기술이 이용될 수 있다.Each of the first and second external electronic devices may be the same or a different type of electronic device. According to various embodiments, all or a part of operations executed by the electronic device may be executed by one or a plurality of other electronic devices (eg, electronic devices or servers. According to one embodiment, the electronic device may perform a certain function or service to be performed automatically or upon request, the electronic device may request from another device (eg, an electronic device or a server) for at least some functions related thereto, instead of or in addition to executing the function or service itself. Another electronic device (eg, an electronic device or a server) may execute the requested function or additional function and transmit the result to the electronic device The electronic device may process the received result as it is or additionally to perform the requested function For this purpose, for example, cloud computing, distributed computing, or client-server computing technology may be used.

전자 장치는 하나 이상의 프로세서(예: AP), 통신 모듈, (가입자 식별 모듈, 메모리, 센서 모듈, 입력 장치, 디스플레이, 인터페이스, 오디오 모듈, 카메라 모듈, 전력 관리 모듈, 배터리, 인디케이터, 및 모터를 포함할 수 있다. 프로세서는, 예를 들면, 운영 체제 또는 응용 프로그램을 구동하여 프로세서에 연결된 다수의 하드웨어 또는 소프트웨어 구성요소들을 제어할 수 있고, 각종 데이터 처리 및 연산을 수행할 수 있다. 프로세서는, 예를 들면, SoC(system on chip)로 구현될 수 있다. 한 실시예에 따르면, 프로세서는 GPU(graphic processing unit) 및/또는 이미지 신호 프로세서를 더 포함할 수 있다. 프로세서는 다른 구성요소들(예: 비휘발성 메모리) 중 적어도 하나로부터 수신된 명령 또는 데이터를 휘발성 메모리에 로드)하여 처리하고, 결과 데이터를 비휘발성 메모리에 저장할 수 있다.The electronic device includes one or more processors (eg, AP), communication modules, (subscriber identification module, memory, sensor module, input device, display, interface, audio module, camera module, power management module, battery, indicator, and motor) The processor may, for example, run an operating system or an application program to control a plurality of hardware or software components connected to the processor, and may perform various data processing and operations. For example, it may be implemented as a system on chip (SoC). According to an embodiment, the processor may further include a graphic processing unit (GPU) and/or an image signal processor. The processor may include other components (eg, : A command or data received from at least one of the non-volatile memory) may be loaded into the volatile memory for processing, and the result data may be stored in the non-volatile memory.

통신 모듈(예: 통신 인터페이스)와 동일 또는 유사한 구성을 가질 수 있다. 통신 모듈은, 예를 들면, 셀룰러 모듈, WiFi 모듈, 블루투스 모듈, GNSS 모듈, NFC 모듈 및 RF 모듈을 포함할 수 있다. 셀룰러 모듈은, 예를 들면, 통신망을 통해서 음성 통화, 영상 통화, 문자 서비스, 또는 인터넷 서비스 등을 제공할 수 있다. 한 실시예에 따르면, 셀룰러 모듈은 가입자 식별 모듈(예: SIM 카드)을 이용하여 통신 네트워크 내에서 전자 장치의 구별 및 인증을 수행할 수 있다. 한 실시예에 따르면, 셀룰러 모듈은 프로세서가 제공할 수 있는 기능 중 적어도 일부 기능을 수행할 수 있다. 한 실시예에 따르면, 셀룰러 모듈은 커뮤니케이션 프로세서(CP)를 포함할 수 있다. 어떤 실시예에 따르면, 셀룰러 모듈, WiFi 모듈, 블루투스 모듈, GNSS 모듈 또는 NFC 모듈 중 적어도 일부(예: 두 개 이상)는 하나의 integrated chip(IC) 또는 IC 패키지 내에 포함될 수 있다. RF 모듈은, 예를 들면, 통신 신호(예: RF 신호)를 송수신할 수 있다. RF 모듈은, 예를 들면, 트랜시버, PAM(power amp module), 주파수 필터, LNA(low noise amplifier), 또는 안테나 등을 포함할 수 있다. 다른 실시예에 따르면, 셀룰러 모듈, WiFi 모듈, 블루투스 모듈, GNSS 모듈 또는 NFC 모듈 중 적어도 하나는 별개의 RF 모듈을 통하여 RF 신호를 송수신할 수 있다. 가입자 식별 모듈은, 예를 들면, 가입자 식별 모듈을 포함하는 카드 또는 임베디드 SIM을 포함할 수 있으며, 고유한 식별 정보(예: ICCID(integrated circuit card identifier)) 또는 가입자 정보(예: IMSI(international mobile subscriber identity))를 포함할 수 있다. It may have the same or similar configuration to a communication module (eg, a communication interface). The communication module may include, for example, a cellular module, a WiFi module, a Bluetooth module, a GNSS module, an NFC module, and an RF module. The cellular module may provide, for example, a voice call, a video call, a text service, or an Internet service through a communication network. According to an embodiment, the cellular module may perform identification and authentication of an electronic device within a communication network using a subscriber identification module (eg, a SIM card). According to an embodiment, the cellular module may perform at least some of the functions that the processor may provide. According to one embodiment, the cellular module may include a communication processor (CP). According to some embodiments, at least some (eg, two or more) of a cellular module, a WiFi module, a Bluetooth module, a GNSS module, or an NFC module may be included in one integrated chip (IC) or an IC package. The RF module may, for example, transmit/receive a communication signal (eg, an RF signal). The RF module may include, for example, a transceiver, a power amp module (PAM), a frequency filter, a low noise amplifier (LNA), or an antenna. According to another embodiment, at least one of a cellular module, a WiFi module, a Bluetooth module, a GNSS module, or an NFC module may transmit/receive an RF signal through a separate RF module. The subscriber identification module may include, for example, a card including a subscriber identification module or an embedded SIM, and may include unique identification information (eg, integrated circuit card identifier (ICCID)) or subscriber information (eg, international mobile (IMSI)). subscriber identity)).

메모리(예: 메모리)는, 예를 들면, 내장 메모리 또는 외장 메모리를 포함할 수 있다. 내장 메모리는, 예를 들면, 휘발성 메모리(예: DRAM, SRAM, 또는 SDRAM 등), 비휘발성 메모리(예: OTPROM(one time programmable ROM), PROM, EPROM, EEPROM, mask ROM, flash ROM, 플래시 메모리, 하드 드라이브, 또는 솔리드 스테이트 드라이브(SSD) 중 적어도 하나를 포함할 수 있다. 외장 메모리는 플래시 드라이브(flash drive), 예를 들면, CF(compact flash), SD(secure digital), Micro-SD, Mini-SD, xD(extreme digital), MMC(multi-media card) 또는 메모리 스틱 등을 포함할 수 있다. 외장 메모리는 다양한 인터페이스를 통하여 전자 장치와 기능적으로 또는 물리적으로 연결될 수 있다.The memory (eg, memory) may include, for example, an internal memory or an external memory. Built-in memory includes, for example, volatile memory (such as DRAM, SRAM, or SDRAM), non-volatile memory (such as one time programmable ROM (OTPROM), PROM, EPROM, EEPROM, mask ROM, flash ROM, flash memory). , a hard drive, or a solid state drive (SSD), the external memory may include a flash drive, for example, a compact flash (CF), secure digital (SD), Micro-SD, It may include a Mini-SD, extreme digital (xD), a multi-media card (MMC), a memory stick, etc. The external memory may be functionally or physically connected to an electronic device through various interfaces.

센서 모듈은, 예를 들면, 물리량을 계측하거나 전자 장치의 작동 상태를 감지하여, 계측 또는 감지된 정보를 전기 신호로 변환할 수 있다. 센서 모듈은, 예를 들면, 제스처 센서, 자이로 센서, 기압 센서, 마그네틱 센서, 가속도 센서, 그립 센서, 근접 센서, 컬러(color) 센서(예: RGB(red, green, blue) 센서), 생체 센서, 온/습도 센서, 조도 센서, 또는 UV(ultra violet) 센서 중의 적어도 하나를 포함할 수 있다. 추가적으로 또는 대체적으로, 센서 모듈은, 예를 들면, 후각(e-nose) 센서, 일렉트로마이오그라피(EMG) 센서, 일렉트로엔씨팔로그램(EEG) 센서, 일렉트로카디오그램(ECG) 센서, IR(infrared) 센서, 홍채 센서 및/또는 지문 센서를 포함할 수 있다. 센서 모듈은 그 안에 속한 적어도 하나 이상의 센서들을 제어하기 위한 제어 회로를 더 포함할 수 있다. 어떤 실시예에서는, 전자 장치는 프로세서의 일부로서 또는 별도로, 센서 모듈을 제어하도록 구성된 프로세서를 더 포함하여, 프로세서가 슬립(sleep) 상태에 있는 동안, 센서 모듈을 제어할 수 있다.The sensor module, for example, may measure a physical quantity or sense an operating state of an electronic device, and may convert the measured or sensed information into an electrical signal. The sensor module may include, for example, a gesture sensor, a gyro sensor, a barometric pressure sensor, a magnetic sensor, an acceleration sensor, a grip sensor, a proximity sensor, a color sensor (eg, an RGB (red, green, blue) sensor), a biometric sensor , it may include at least one of a temperature/humidity sensor, an illuminance sensor, and an ultra violet (UV) sensor. Additionally or alternatively, the sensor module may include, for example, an olfactory (e-nose) sensor, an electromyography (EMG) sensor, an electroencephalogram (EEG) sensor, an electrocardiogram (ECG) sensor, an infrared (IR) sensor. ) sensor, an iris sensor and/or a fingerprint sensor. The sensor module may further include a control circuit for controlling at least one or more sensors included therein. In some embodiments, the electronic device may further include a processor configured to control the sensor module, as part of the processor or separately, to control the sensor module while the processor is in a sleep state.

입력 장치는, 예를 들면, 터치 패널, (디지털) 펜 센서, 키, 또는 초음파 입력 장치를 포함할 수 있다. 터치 패널은, 예를 들면, 정전식, 감압식, 적외선 방식, 또는 초음파 방식 중 적어도 하나의 방식을 사용할 수 있다. 또한, 터치 패널은 제어 회로를 더 포함할 수도 있다. 터치 패널은 택타일 레이어(tactile layer)를 더 포함하여, 사용자에게 촉각 반응을 제공할 수 있다. (디지털) 펜 센서는, 예를 들면, 터치 패널의 일부이거나, 별도의 인식용 쉬트를 포함할 수 있다. 키는, 예를 들면, 하드웨어 버튼, 광학식 키, 또는 키패드를 포함할 수 있다. 초음파 입력 장치는 마이크를 통해, 입력 도구에서 발생된 초음파를 감지하여, 상기 감지된 초음파에 대응하는 데이터를 확인할 수 있다.The input device may include, for example, a touch panel, a (digital) pen sensor, a key, or an ultrasonic input device. The touch panel may use, for example, at least one of a capacitive type, a pressure-sensitive type, an infrared type, and an ultrasonic type. In addition, the touch panel may further include a control circuit. The touch panel may further include a tactile layer to provide a tactile response to the user. The (digital) pen sensor may be, for example, a part of a touch panel or may include a separate recognition sheet. The key may include, for example, a hardware button, an optical key, or a keypad. The ultrasound input device may detect the ultrasound generated by the input tool through the microphone, and check data corresponding to the sensed ultrasound.

디스플레이는 패널, 홀로그램 장치, 프로젝터, 및/또는 이들을 제어하기 위한 제어 회로를 포함할 수 있다. 패널은, 예를 들면, 유연하게, 투명하게, 또는 착용할 수 있게 구현될 수 있다. 패널은 터치 패널과 하나 이상의 모듈로 구성될 수 있다. 한 실시예에 따르면, 패널은 사용자의 터치에 대한 압력의 세기를 측정할 수 있는 압력 센서(또는 포스 센서)를 포함할 수 있다. 상기 압력 센서는 터치 패널과 일체형으로 구현되거나, 또는 터치 패널과는 별도의 하나 이상의 센서로 구현될 수 있다. 홀로그램 장치는 빛의 간섭을 이용하여 입체 영상을 허공에 보여줄 수 있다. 프로젝터는 스크린에 빛을 투사하여 영상을 표시할 수 있다. 스크린은, 예를 들면, 전자 장치의 내부 또는 외부에 위치할 수 있다. 인터페이스는, 예를 들면, HDMI, USB, 광 인터페이스(optical interface), 또는 D-sub(D-subminiature)(278)를 포함할 수 있다. 추가적으로 또는 대체적으로, 인터페이스는, 예를 들면, MHL(mobile high-definition link) 인터페이스, SD카드/MMC(multi-media card) 인터페이스, 또는 IrDA(infrared data association) 규격 인터페이스를 포함할 수 있다. The display may include a panel, a holographic device, a projector, and/or control circuitry for controlling them. The panel may be implemented, for example, to be flexible, transparent, or wearable. The panel may be composed of a touch panel and one or more modules. According to an embodiment, the panel may include a pressure sensor (or a force sensor) capable of measuring the intensity of the user's touch. The pressure sensor may be implemented integrally with the touch panel, or may be implemented as one or more sensors separate from the touch panel. The holographic device may display a three-dimensional image in the air using interference of light. A projector can display an image by projecting light onto a screen. The screen may be located inside or outside the electronic device, for example. The interface may include, for example, HDMI, USB, an optical interface, or a D-subminiature (D-sub) 278 . Additionally or alternatively, the interface may include, for example, a mobile high-definition link (MHL) interface, an SD card/multi-media card (MMC) interface, or an infrared data association (IrDA) standard interface.

오디오 모듈은, 예를 들면, 소리와 전기 신호를 쌍방향으로 변환시킬 수 있다. 오디오 모듈은, 예를 들면, 스피커, 리시버, 이어폰, 또는 마이크 등을 통해 입력 또는 출력되는 소리 정보를 처리할 수 있다. 카메라 모듈은, 예를 들면, 정지 영상 및 동영상을 촬영할 수 있는 장치로서, 한 실시예에 따르면, 하나 이상의 이미지 센서(예: 전면 센서 또는 후면 센서), 렌즈, 이미지 시그널 프로세서(ISP), 또는 플래시(예: LED 또는 xenon lamp 등)를 포함할 수 있다. 전력 관리 모듈은, 예를 들면, 전자 장치의 전력을 관리할 수 있다. 한 실시예에 따르면, 전력 관리 모듈은 PMIC(power management integrated circuit), 충전 IC, 또는 배터리 또는 연료 게이지를 포함할 수 있다. PMIC는, 유선 및/또는 무선 충전 방식을 가질 수 있다. 무선 충전 방식은, 예를 들면, 자기공명 방식, 자기유도 방식 또는 전자기파 방식 등을 포함하며, 무선 충전을 위한 부가적인 회로, 예를 들면, 코일 루프, 공진 회로, 또는 정류기 등을 더 포함할 수 있다. 배터리 게이지는, 예를 들면, 배터리의 잔량, 충전 중 전압, 전류, 또는 온도를 측정할 수 있다. 배터리는, 예를 들면, 충전식 전지 및/또는 태양 전지를 포함할 수 있다. The audio module may, for example, convert a sound and an electrical signal interactively. The audio module may process sound information input or output through, for example, a speaker, a receiver, an earphone, or a microphone. The camera module is, for example, a device capable of capturing still images and moving pictures, and according to one embodiment, one or more image sensors (eg, a front sensor or a rear sensor), a lens, an image signal processor (ISP), or a flash (eg, LED or xenon lamp, etc.). The power management module may manage power of the electronic device, for example. According to one embodiment, the power management module may include a power management integrated circuit (PMIC), a charger IC, or a battery or fuel gauge. The PMIC may have a wired and/or wireless charging method. The wireless charging method includes, for example, a magnetic resonance method, a magnetic induction method or an electromagnetic wave method, and may further include an additional circuit for wireless charging, for example, a coil loop, a resonance circuit, or a rectifier. have. The battery gauge may measure, for example, the remaining amount of the battery, voltage, current, or temperature during charging. Batteries may include, for example, rechargeable cells and/or solar cells.

인디케이터는 전자 장치 또는 그 일부(예: 프로세서)의 특정 상태, 예를 들면, 부팅 상태, 메시지 상태 또는 충전 상태 등을 표시할 수 있다. 모터는 전기적 신호를 기계적 진동으로 변환할 수 있고, 진동, 또는 햅틱 효과 등을 발생시킬 수 있다. 전자 장치는, 예를 들면, DMB(digital multimedia broadcasting), DVB(digital video broadcasting), 또는 미디어플로(mediaFloTM) 등의 규격에 따른 미디어 데이터를 처리할 수 있는 모바일 TV 지원 장치(예: GPU)를 포함할 수 있다. 본 문서에서 기술된 구성요소들 각각은 하나 또는 그 이상의 부품(component)으로 구성될 수 있으며, 해당 구성요소의 명칭은 전자 장치의 종류에 따라서 달라질 수 있다. 다양한 실시예에서, 전자 장치(예: 전자 장치)는 일부 구성요소가 생략되거나, 추가적인 구성요소를 더 포함하거나, 또는, 구성요소들 중 일부가 결합되어 하나의 개체로 구성되되, 결합 이전의 해당 구성요소들의 기능을 동일하게 수행할 수 있다.The indicator may display a specific state of the electronic device or a part thereof (eg, a processor), for example, a booting state, a message state, or a charging state. The motor may convert an electrical signal into mechanical vibration, and may generate vibration, a haptic effect, or the like. The electronic device is, for example, a mobile TV supporting device (eg, GPU) capable of processing media data according to a standard such as digital multimedia broadcasting (DMB), digital video broadcasting (DVB), or mediaFlo TM . may include Each of the components described in this document may be composed of one or more components, and the name of the component may vary depending on the type of the electronic device. In various embodiments, an electronic device (eg, an electronic device) has some components omitted, additional components are further included, or some of the components are combined to form a single entity, but the corresponding components before the combination The functions of the components may be performed identically.

본 발명의 다양한 실시예에서, 전자 장치(또는, 전자 장치)는, 전면, 후면 및 상기 전면과 상기 후면 사이의 공간을 둘러싸는 측면을 포함하는 하우징을 포함할 수도 있다. 터치스크린 디스플레이(예: 디스플레이)는, 상기 하우징 안에 배치되며, 상기 전면을 통하여 노출될 수 있다. 마이크는, 상기 하우징 안에 배치되며, 상기 하우징의 부분을 통하여 노출될 수 있다. 적어도 하나의 스피커는, 상기 하우징 안에 배치되며, 상기 하우징의 다른 부분을 통하여 노출될 수 있다. 하드웨어 버튼(예: 키)는, 상기 하우징의 또 다른 부분에 배치되거나 또는 상기 터치스크린 디스플레이 상에 표시하도록 설정될 수 있다. 무선 통신 회로(예: 통신 모듈)은, 상기 하우징 안에 위치할 수 있다. 상기 프로세서(또는, 프로세서)는, 상기 하우징 안에 위치하며, 상기 터치스크린 디스플레이, 상기 마이크, 상기 스피커 및 상기 무선 통신 회로에 전기적으로 연결될 수 있다. 상기 메모리(또는, 메모리)는, 상기 하우징 안에 위치하며, 상기 프로세서에 전기적으로 연결될 수 있다.In various embodiments of the present disclosure, the electronic device (or electronic device) may include a housing including a front surface, a rear surface, and side surfaces surrounding a space between the front surface and the rear surface. A touch screen display (eg, a display) may be disposed in the housing and exposed through the front surface. A microphone is disposed within the housing and may be exposed through a portion of the housing. At least one speaker is disposed in the housing and may be exposed through another portion of the housing. A hardware button (eg, a key) may be disposed on another part of the housing or configured to be displayed on the touchscreen display. A wireless communication circuit (eg, a communication module) may be located in the housing. The processor (or processor) may be located in the housing and may be electrically connected to the touch screen display, the microphone, the speaker, and the wireless communication circuit. The memory (or memory) may be located in the housing and may be electrically connected to the processor.

본 발명의 다양한 실시예에서, 상기 메모리는, 텍스트 입력을 수신하기 위한 제1 사용자 인터페이스를 포함하는 제1 어플리케이션 프로그램을 저장하도록 설정되고, 상기 메모리는, 실행 시에, 상기 프로세서가, 제1 동작과 제2 동작을 수행하도록 야기하는 인스트럭션들을 저장하고, 상기 제1 동작은, 상기 제1 사용자 인터페이스가 상기 터치스크린 디스플레이 상에 표시되지 않는 도중에, 상기 버튼을 통하여 제1 타입의 사용자 입력을 수신하고, 상기 제1 타입의 사용자 입력을 수신한 이후에, 상기 마이크를 통하여 제1 사용자 발화를 수신하고, 자동 스피치 인식(ASR: automatic speech recognition) 및 지능 시스템(intelligence system)을 포함하는 외부 서버로 상기 제1 사용자 발화에 대한 제1 데이터를 제공하고, 상기 제1 데이터를 제공한 이후에, 상기 외부 서버로부터 상기 제1 사용자 발화에 응답하여 상기 지능 시스템에 의하여 생성되는 태스크를 수행하도록 하는 적어도 하나의 명령을 수신하고, 상기 제2 동작은, 상기 터치스크린 디스플레이 상에 상기 제1 사용자 인터페이스가 표시되는 도중에 상기 버튼을 통하여 상기 제1 사용자 입력을 수신하고, 상기 제1 타입의 사용자 입력을 수신한 이후에, 상기 마이크를 통하여 제2 사용자 발화를 수신하고, 상기 외부 서버로 상기 제2 사용자 발화에 대한 제2 데이터를 제공하고, 상기 제2 데이터를 제공한 이후에, 상기 서버로부터, 상기 제2 사용자 발화로부터 상기 자동 스피치 인식에 의하여 생성된 텍스트에 대한 데이터를 수신하지만, 상기 지능 시스템에 의하여 생성되는 명령은 수신하지 않고, 상기 제1 사용자 인터페이스에 상기 텍스트를 입력할 수 있다.In various embodiments of the present disclosure, the memory is configured to store a first application program including a first user interface for receiving a text input, and the memory, when executed, causes the processor to perform a first operation and instructions for causing a second operation to be performed, wherein the first operation comprises: receiving a first type of user input through the button while the first user interface is not displayed on the touch screen display; , after receiving the first type of user input, receive a first user utterance through the microphone, and send to an external server including an automatic speech recognition (ASR) and an intelligence system. at least one providing first data for a first user utterance, and after providing the first data, performing a task generated by the intelligent system in response to the first user utterance from the external server Receiving a command, the second operation is performed after receiving the first user input through the button while the first user interface is displayed on the touch screen display and receiving the first type of user input , receive a second user's utterance through the microphone, provide second data for the second user's utterance to the external server, and after providing the second data, from the server, the second user receiving data about the text generated by the automatic speech recognition from an utterance, but not receiving a command generated by the intelligent system, and inputting the text into the first user interface.

본 발명의 다양한 실시예에서, 상기 버튼은, 상기 하우징의 상기 측면에 위치하는 물리적인 키를 포함할 수 있다.In various embodiments of the present disclosure, the button may include a physical key located on the side surface of the housing.

본 발명의 다양한 실시예에서, 상기 제1 타입의 사용자 입력은, 상기 버튼에 대한 1회 누름, 상기 버튼에 대한 2회 누름, 상기 버튼에 대한 3회 누름, 상기 버튼에 대한 1회 누른 이후에 누름 유지, 또는 상기 버튼에 대한 2회 누름 및 누름 유지 중 하나일 수 있다.In various embodiments of the present disclosure, the first type of user input may be performed after pressing the button once, pressing the button twice, pressing the button 3 times, and pressing the button once. It can be one of a press and hold, or a double press and hold down on the button.

본 발명의 다양한 실시예에서, 상기 인스트럭션들은, 상기 프로세서가 상기 제1 사용자 인터페이스를 가상 키보드와 함께 표시하도록 더 야기할 수 있다. 상기 버튼은, 상기 가상 키보드의 일부가 아닐 수 있다.In various embodiments of the present disclosure, the instructions may further cause the processor to display the first user interface together with a virtual keyboard. The button may not be a part of the virtual keyboard.

본 발명의 다양한 실시예에서, 상기 인스트럭션들은, 상기 프로세서가, 상기 외부 서버로부터, 상기 제1 동작 내에서의 상기 제1 사용자 발화로부터 ASR에 의하여 생성되는 텍스트에 대한 데이터를 수신하도록 더 야기할 수 있다.In various embodiments of the present disclosure, the instructions may further cause the processor to receive, from the external server, data for text generated by an ASR from the first user utterance within the first operation. have.

본 발명의 다양한 실시예에서, 상기 제1 어플리케이션 프로그램은, 노트 어플리케이션 프로그램, 이메일 어플리케이션 프로그램, 웹 브라우저 어플리케이션 프로그램 또는 달력 어플리케이션 프로그램 중 적어도 하나를 포함할 수 있다.In various embodiments of the present disclosure, the first application program may include at least one of a note application program, an email application program, a web browser application program, and a calendar application program.

본 발명의 다양한 실시예에서, 상기 제1 어플리케이션 프로그램은, 메시지 어플리케이션을 포함하고, 상기 인스트럭션들은, 상기 프로세서가, 상기 텍스트를 입력한 이후에 선택된 시간 기간이 초과하면, 상기 무선 통신 회로를 통하여 자동으로 입력된 텍스트를 송신하도록 더 야기할 수 있다.In various embodiments of the present disclosure, the first application program includes a message application, and the instructions are automatically executed via the wireless communication circuit when the processor, by the processor, exceeds a selected time period after inputting the text. may further cause the inputted text to be transmitted.

본 발명의 다양한 실시예에서, 상기 인스트럭션들은, 상기 프로세서가, 제3 동작을 수행하도록 더 야기하고, 상기 제3 동작은, 상기 터치스크린 디스플레이 상에 상기 제1 사용자 인터페이스를 표시하는 도중에, 상기 버튼을 통하여 제2 타입의 사용자 입력을 수신하고, 상기 제2 타입의 사용자 입력을 수신한 이후에, 상기 마이크를 통하여 제3 사용자 발화를 수신하고, 상기 외부 서버로 상기 제3 사용자 발화에 대한 제3 데이터를 제공하고, 상기 제3 데이터를 제공한 이후에, 상기 제3 사용자 발화에 응답하여 상기 지능 시스템에 의하여 생성된 태스크를 수행하기 위한 적어도 하나의 명령을 상기 외부 서버로부터 수신할 수 있다.In various embodiments of the present disclosure, the instructions further cause the processor to perform a third operation, wherein the third operation includes: while displaying the first user interface on the touch screen display, the button Receives a second type of user input through , and after receiving the second type of user input, receives a third user utterance through the microphone, and sends a third response to the third user utterance to the external server After providing data and providing the third data, at least one command for performing a task generated by the intelligent system in response to the third user utterance may be received from the external server.

본 발명의 다양한 실시예에서, 상기 인스트럭션들은, 상기 프로세서가, 제4 동작을 수행하도록 더 야기하고, 상기 제4 동작은, 상기 터치스크린 디스플레이 상에 상기 제1 사용자 인터페이스가 표시되지 않는 도중에, 상기 버튼을 통하여 상기 제2 타입의 사용자 입력을 수신하고, 상기 제2 타입의 사용자 입력을 수신한 이후에, 상기 마이크를 통하여 제4 사용자 발화를 수신하고, 상기 제4 사용자 발화에 대한 제4 데이터를 상기 외부 서버로 제공하고, 상기 제4 데이터를 제공한 이후에, 상기 제4 사용자 발화에 응답하여, 상기 지능 시스템에 의하여 생성된 태스크를 수행하기 위한 적어도 하나의 명령을 상기 외부 서버로부터 수신하고, 상기 마이크를 통하여 제5 사용자 발화를 수신하고, 상기 외부 서버로, 상기 제5 사용자 발화에 대한 제5 데이터를 제공하고, 및 상기 제5 데이터를 제공한 이후에, 상기 제5 사용자 발화에 응답하여 상기 지능 시스템에 의하여 생성된 태스크를 수행하기 위한 적어도 하나의 명령을 상기 외부 서버로부터 수신할 수 있다.In various embodiments of the present disclosure, the instructions further cause the processor to perform a fourth operation, wherein the fourth operation is performed while the first user interface is not displayed on the touch screen display. Receives the second type of user input through a button, and after receiving the second type of user input, receives a fourth user utterance through the microphone, and receives fourth data for the fourth user utterance After providing to the external server and providing the fourth data, in response to the fourth user utterance, receiving at least one command for performing a task generated by the intelligent system from the external server, receiving a fifth user utterance through the microphone, providing fifth data on the fifth user utterance to the external server, and after providing the fifth data, in response to the fifth user utterance At least one command for performing the task generated by the intelligent system may be received from the external server.

본 발명의 다양한 실시예에서, 상기 제1 타입의 사용자 입력 및 상기 제2 타입의 사용자 입력은 서로 다르며, 상기 버튼에 대한 1회 누름, 상기 버튼에 대한 2회 누름, 상기 버튼에 대한 3회 누름, 상기 버튼에 대한 1회 누른 이후에 누름 유지, 또는 상기 버튼에 대한 2회 누름 및 누름 유지 중 하나로부터 선택될 수 있다.In various embodiments of the present invention, the first type of user input and the second type of user input are different from each other, and a single press of the button, two presses of the button, three presses of the button , one of pressing and holding the button after pressing it once, or pressing and holding the press twice on the button.

본 발명의 다양한 실시예에서, 상기 메모리는, 텍스트 입력을 수신하기 위한 제2 사용자 인터페이스를 포함하는 제2 어플리케이션 프로그램을 저장하도록 더 설정되며, 상기 인스트럭션들은, 실행 시에, 상기 프로세서가, 제3 동작을 수행하도록 더 야기하고, 상기 제3 동작은, 상기 제2 사용자 인터페이스를 표시하는 도중에 상기 버튼을 통하여 상기 제1 타입의 사용자 입력을 수신하고, 상기 제1 타입의 사용자 입력이 수신된 이후에, 상기 마이크를 통하여 제3 사용자 발화를 수신하고, 상기 외부 서버로, 상기 제3 사용자 발화에 대한 제3 데이터를 제공하고, 상기 제3 데이터를 제공한 이후에, 상기 외부 서버로부터, 상기 제3 사용자 발화로부터 ASR에 의하여 생성된 텍스트에 대한 데이터를 수신하면서, 상기 지능 시스템에 의하여 생성되는 명령은 수신하지 않고, 상기 제2 사용자 인터페이스에 상기 텍스트를 입력하고, 및 상기 텍스트를 입력하고, 선택된 시간 기간이 초과하면, 상기 무선 통신 회로를 통하여 상기 입력된 텍스트를 자동으로 송신할 수 있다.In various embodiments of the present disclosure, the memory is further configured to store a second application program including a second user interface for receiving a text input, wherein the instructions, when executed, cause the processor to: further cause to perform an operation, wherein the third operation is performed after receiving the first type of user input through the button while displaying the second user interface, and receiving the first type of user input , receives a third user utterance through the microphone, provides third data for the third user utterance to the external server, and after providing the third data, from the external server, the third receiving data for text generated by the ASR from a user utterance, without receiving a command generated by the intelligent system, entering the text into the second user interface, and entering the text, at a selected time If the time period is exceeded, the inputted text may be automatically transmitted through the wireless communication circuit.

본 발명의 다양한 실시예에서, 상기 메모리는, 텍스트 입력을 수신하기 위한 제1 사용자 인터페이스를 포함하는 제1 어플리케이션 프로그램을 저장하도록 설정되고, 상기 메모리는, 실행 시에, 상기 프로세서가, 제1 동작과 제2 동작을 수행하도록 야기하는 인스트럭션들을 저장하고, 상기 제1 동작은, 상기 버튼을 통하여 제1 타입의 사용자 입력을 수신하고, 상기 제1 타입의 사용자 입력을 수신한 이후에, 상기 마이크를 통하여 제1 사용자 발화를 수신하고, 자동 스피치 인식(ASR: automatic speech recognition) 및 지능 시스템(intelligence system)을 포함하는 외부 서버로, 상기 제1 사용자 발화에 대한 제1 데이터를 제공하고, 및 상기 제1 데이터를 제공한 이후에, 상기 제1 사용자 발화에 응답하여 상기 지능 시스템에 의하여 생성된 태스크를 수행하기 위한 적어도 하나의 명령을 상기 외부 서버로부터 수신하고, 상기 제2 동작은, 상기 버튼을 통하여 제2 타입의 사용자 입력을 수신하고, 상기 제2 타입의 사용자 입력을 수신한 이후에, 상기 마이크를 통하여 제2 사용자 발화를 수신하고, 상기 외부 서버로 상기 제2 사용자 발화에 대한 제2 데이터를 제공하고, 상기 제2 데이터를 제공한 이후에, 상기 서버로부터, 상기 제2 사용자 발화로부터 ASR에 의하여 생성된 텍스트에 대한 데이터를 수신하면서, 상기 지능 시스템에 의하여 생성되는 명령은 수신하지 않으며, 상기 제1 사용자 인터페이스에 상기 텍스트를 입력할 수 있다.In various embodiments of the present disclosure, the memory is configured to store a first application program including a first user interface for receiving a text input, and the memory, when executed, causes the processor to perform a first operation and instructions for causing to perform a second operation, wherein the first operation receives a first type of user input through the button, and after receiving the first type of user input, the microphone is Receive a first user utterance through an external server including automatic speech recognition (ASR) and an intelligence system, and provide first data for the first user utterance, and After providing 1 data, at least one command for performing a task generated by the intelligent system in response to the first user utterance is received from the external server, and the second operation is performed through the button Receives a second type of user input, and after receiving the second type of user input, receives a second user utterance through the microphone, and transmits second data for the second user utterance to the external server and after providing the second data, receiving from the server data for the text generated by the ASR from the second user utterance, but not receiving the command generated by the intelligent system, The text may be entered into the first user interface.

본 발명의 다양한 실시예에서, 상기 인스트럭션들은, 상기 프로세서가 상기 제1 사용자 인터페이스를 가상 키보드와 함께 표시하도록 더 야기할 수 있으며, 상기 버튼은, 상기 가상 키보드의 일부가 아닐 수 있다.In various embodiments of the present disclosure, the instructions may further cause the processor to display the first user interface together with a virtual keyboard, wherein the button may not be part of the virtual keyboard.

본 발명의 다양한 실시예에서, 상기 인스트럭션들은, 상기 프로세서가, 상기 외부 서버로부터 상기 제1 동작 내에서 상기 제1 사용자 발화로부터 상기 ASR에 의하여 생성되는 텍스트에 대한 데이터를 수신하도록 더 야기할 수 있다.In various embodiments of the present disclosure, the instructions may further cause the processor to receive, from the external server, data for the text generated by the ASR from the first user utterance within the first operation. .

본 발명의 다양한 실시예에서, 상기 제1 어플리케이션 프로그램은, 노트 어플리케이션 프로그램, 이메일 어플리케이션 프로그램, 웹 브라우저 어플리케이션 프로그램 또는 달력 어플리케이션 프로그램 중 적어도 하나를 포함할 수 있다.In various embodiments of the present disclosure, the first application program may include at least one of a note application program, an email application program, a web browser application program, and a calendar application program.

본 발명의 다양한 실시예에서, 상기 제1 어플리케이션 프로그램은, 메시지 어플리케이션을 포함하고, 상기 인스트럭션들은, 상기 프로세서가, 상기 텍스트를 입력한 이후에 선택된 시간 기간이 초과하면, 상기 무선 통신 회로를 통하여 자동으로 입력된 텍스트를 송신하도록 더 야기할 수 있다.In various embodiments of the present disclosure, the first application program includes a message application, and the instructions are automatically executed via the wireless communication circuit when the processor, by the processor, exceeds a selected time period after inputting the text. may further cause the inputted text to be transmitted.

본 발명의 다양한 실시예에서, 상기 인스트럭션들은, 상기 프로세서가 상기 제1 사용자 인터페이스의 상기 디스플레이 상에 표시와 독립적으로 상기 제1 동작을 수행하도록 더 야기할 수 있다.In various embodiments of the present disclosure, the instructions may further cause the processor to perform the first operation independently of displaying on the display of the first user interface.

본 발명의 다양한 실시예에서, 상기 인스트럭션들은, 상기 프로세서가, 상기 전자 장치가 잠금 상태에 있거나 또는 상기 터치스크린 디스플레이가 턴 오프된 것 중 적어도 하나인 경우에, 상기 제2 동작을 수행하도록 더 야기할 수 있다.In various embodiments of the present disclosure, the instructions further cause the processor to perform the second operation when at least one of the electronic device is in a locked state or the touchscreen display is turned off can do.

본 발명의 다양한 실시예에서, 상기 인스트럭션들은, 상기 프로세서가, 상기 터치스크린 디스플레이 상에 상기 제1 사용자 인터페이스를 표시하는 도중에, 상기 제2 동작을 수행하도록 더 야기할 수 있다.In various embodiments of the present disclosure, the instructions may further cause the processor to perform the second operation while displaying the first user interface on the touch screen display.

본 발명의 다양한 실시예에서, 상기 메모리는, 실행 시에, 상기 프로세서가, 상기 마이크를 통하여 사용자 발화를 수신하고, 자동 스피치 인식(automatic speech recognition: ASR) 또는 자연어 이해(natural language understanding: NLU) 중 적어도 하나를 수행하는 외부 서버로, 상기 사용자 발화에 대한 데이터와 함께, 상기 사용자 발화에 대한 데이터에 대하여 상기 ASR을 수행하여 획득된 텍스트에 대하여 상기 자연어 이해를 수행할지 여부와 연관된 정보를 송신하고, 상기 정보가 상기 자연어 이해를 수행하지 않을 것을 나타내면, 상기 외부 서버로부터 상기 사용자 발화에 대한 데이터에 대한 상기 텍스트를 수신하고, 상기 정보가 상기 자연어 이해를 수행할 것을 나타내면, 상기 외부 서버로부터 상기 텍스트에 대한 상기 자연어 이해 수행 결과 획득된 명령을 수신하도록 야기하는 인스트럭션을 저장할 수 있다.In various embodiments of the present invention, the memory, when executed, causes the processor to receive a user utterance through the microphone, and perform automatic speech recognition (ASR) or natural language understanding (NLU) To an external server that performs at least one of, transmits information related to whether to perform the natural language understanding on the text obtained by performing the ASR on the data on the user utterance together with the data on the user utterance, , receive the text for data about the user utterance from the external server if the information indicates not to perform the natural language understanding, and if the information indicates to perform the natural language understanding, the text from the external server An instruction for causing to receive a command obtained as a result of performing the natural language understanding may be stored.

한 실시예에 따르면, 프로그램 모듈(예: 프로그램)은 전자 장치(예: 전자 장치)에 관련된 자원을 제어하는 운영 체제 및/또는 운영 체제 상에서 구동되는 다양한 어플리케이션(예: 어플리케이션 프로그램)을 포함할 수 있다. 운영 체제는, 예를 들면, AndroidTM, iOSTM, WindowsTM, SymbianTM, TizenTM, 또는 BadaTM를 포함할 수 있다. 프로그램 모듈은 커널(예: 커널), 미들웨어(예: 미들웨어), (API(예: API), 및/또는 어플리케이션(예: 어플리케이션 프로그램)을 포함할 수 있다. 프로그램 모듈의 적어도 일부는 전자 장치 상에 프리로드 되거나, 외부 전자 장치(예: 전자 장치, 서버 등)로부터 다운로드 가능하다.According to an embodiment, a program module (eg, program) may include an operating system that controls resources related to an electronic device (eg, electronic device) and/or various applications (eg, application program) running on the operating system. have. The operating system may include, for example, Android TM , iOS TM , Windows TM , Symbian TM , Tizen TM , or Bada TM . A program module may include a kernel (eg, a kernel), middleware (eg, middleware), an API (eg, an API), and/or an application (eg, an application program). At least a part of the program module is located on the electronic device. It can be preloaded on the computer or downloaded from an external electronic device (eg, electronic device, server, etc.).

커널은, 예를 들면, 시스템 리소스 매니저 및/또는 디바이스 드라이버를 포함할 수 있다. 시스템 리소스 매니저는 시스템 리소스의 제어, 할당, 또는 회수를 수행할 수 있다. 한 실시예에 따르면, 시스템 리소스 매니저는 프로세스 관리부, 메모리 관리부, 또는 파일 시스템 관리부를 포함할 수 있다. 디바이스 드라이버는, 예를 들면, 디스플레이 드라이버, 카메라 드라이버, 블루투스 드라이버, 공유 메모리 드라이버, USB 드라이버, 키패드 드라이버, WiFi 드라이버, 오디오 드라이버, 또는 IPC(inter-process communication) 드라이버를 포함할 수 있다. 미들웨어는, 예를 들면, 어플리케이션이 공통적으로 필요로 하는 기능을 제공하거나, 어플리케이션이 전자 장치 내부의 제한된 시스템 자원을 사용할 수 있도록 API를 통해 다양한 기능들을 어플리케이션으로 제공할 수 있다. 한 실시예에 따르면, 미들웨어는 런타임 라이브러리, 어플리케이션 매니저, 윈도우 매니저, 멀티미디어 매니저, 리소스 매니저, 파워 매니저, 데이터베이스 매니저, 패키지 매니저, 커넥티비티 매니저, 노티피케이션 매니저, 로케이션 매니저, 그래픽 매니저, 또는 시큐리티 매니저 중 적어도 하나를 포함할 수 있다.The kernel may include, for example, a system resource manager and/or device driver. The system resource manager may control, allocate, or reclaim system resources. According to an embodiment, the system resource manager may include a process manager, a memory manager, or a file system manager. The device driver may include, for example, a display driver, a camera driver, a Bluetooth driver, a shared memory driver, a USB driver, a keypad driver, a WiFi driver, an audio driver, or an inter-process communication (IPC) driver. For example, the middleware may provide functions commonly required by applications or provide various functions to applications through APIs so that applications can use limited system resources inside the electronic device. According to an embodiment, the middleware is one of a runtime library, an application manager, a window manager, a multimedia manager, a resource manager, a power manager, a database manager, a package manager, a connectivity manager, a notification manager, a location manager, a graphics manager, or a security manager. It may include at least one.

런타임 라이브러리는, 예를 들면, 어플리케이션이 실행되는 동안에 프로그래밍 언어를 통해 새로운 기능을 추가하기 위해 컴파일러가 사용하는 라이브러리 모듈을 포함할 수 있다. 런타임 라이브러리는 입출력 관리, 메모리 관리, 또는 산술 함수 처리를 수행할 수 있다. 어플리케이션 매니저는, 예를 들면, 어플리케이션의 생명 주기를 관리할 수 있다. 윈도우 매니저는 화면에서 사용되는 GUI 자원을 관리할 수 있다. 멀티미디어 매니저는 미디어 파일들의 재생에 필요한 포맷을 파악하고, 해당 포맷에 맞는 코덱을 이용하여 미디어 파일의 인코딩 또는 디코딩을 수행할 수 있다. 리소스 매니저는 어플리케이션의 소스 코드 또는 메모리의 공간을 관리할 수 있다. 파워 매니저는, 예를 들면, 배터리의 용량 또는 전원을 관리하고, 전자 장치의 동작에 필요한 전력 정보를 제공할 수 있다. 한 실시예에 따르면, 파워 매니저는 바이오스(BIOS: basic input/output system)와 연동할 수 있다. 데이터베이스 매니저는, 예를 들면, 어플리케이션에서 사용될 데이터베이스를 생성, 검색, 또는 변경할 수 있다. 패키지 매니저는 패키지 파일의 형태로 배포되는 어플리케이션의 설치 또는 갱신을 관리할 수 있다. The runtime library may include, for example, a library module used by the compiler to add a new function through a programming language while an application is running. The runtime library may perform I/O management, memory management, or arithmetic function processing. The application manager may, for example, manage the life cycle of the application. The window manager can manage GUI resources used in the screen. The multimedia manager may identify a format required to reproduce the media files, and may encode or decode the media files using a codec suitable for the format. The resource manager may manage the space of an application's source code or memory. The power manager may, for example, manage a capacity or power of a battery and provide power information required for an operation of an electronic device. According to an embodiment, the power manager may interwork with a basic input/output system (BIOS). The database manager may, for example, create, retrieve, or change a database to be used in an application. The package manager may manage installation or update of an application distributed in the form of a package file.

커넥티비티 매니저는, 예를 들면, 무선 연결을 관리할 수 있다. 노티피케이션 매니저는, 예를 들면, 도착 메시지, 약속, 근접성 알림 등의 이벤트를 사용자에게 제공할 수 있다. 로케이션 매니저는, 예를 들면, 전자 장치의 위치 정보를 관리할 수 있다. 그래픽 매니저는, 예를 들면, 사용자에게 제공될 그래픽 효과 또는 이와 관련된 사용자 인터페이스를 관리할 수 있다. 보안 매니저는, 예를 들면, 시스템 보안 또는 사용자 인증을 제공할 수 있다. 한 실시예에 따르면, 미들웨어는 전자 장치의 음성 또는 영상 통화 기능을 관리하기 위한 통화(telephony) 매니저 또는 전술된 구성요소들의 기능들의 조합을 형성할 수 있는 하는 미들웨어 모듈을 포함할 수 있다. 한 실시예에 따르면, 미들웨어는 운영 체제의 종류 별로 특화된 모듈을 제공할 수 있다. 미들웨어는 동적으로 기존의 구성요소를 일부 삭제하거나 새로운 구성요소들을 추가할 수 있다. API는, 예를 들면, API 프로그래밍 함수들의 집합으로, 운영 체제에 따라 다른 구성으로 제공될 수 있다. 예를 들면, 안드로이드 또는 iOS의 경우, 플랫폼 별로 하나의 API 셋을 제공할 수 있으며, 타이젠의 경우, 플랫폼 별로 두 개 이상의 API 셋을 제공할 수 있다.The connectivity manager may, for example, manage wireless connections. The notification manager may provide, for example, an event such as an arrival message, an appointment, and a proximity notification to the user. The location manager may manage location information of the electronic device, for example. The graphic manager may manage a graphic effect to be provided to a user or a user interface related thereto, for example. A security manager may provide, for example, system security or user authentication. According to an embodiment, the middleware may include a telephony manager for managing a voice or video call function of the electronic device or a middleware module capable of forming a combination of functions of the aforementioned components. According to an embodiment, the middleware may provide a specialized module for each type of operating system. Middleware can dynamically delete some existing components or add new ones. The API may be provided in a different configuration depending on the operating system, for example, as a set of API programming functions. For example, in the case of Android or iOS, one API set may be provided for each platform, and in the case of Tizen, two or more API sets may be provided for each platform.

어플리케이션은, 예를 들면, 홈, 다이얼러, SMS/MMS, IM(instant message), 브라우저, 카메라, 알람, 컨택트, 음성 다이얼, 이메일, 달력, 미디어 플레이어, 앨범, 와치, 헬스 케어(예: 운동량 또는 혈당 등을 측정), 또는 환경 정보(예: 기압, 습도, 또는 온도 정보) 제공 어플리케이션을 포함할 수 있다. 한 실시예에 따르면, 어플리케이션은 전자 장치와 외부 전자 장치 사이의 정보 교환을 지원할 수 있는 정보 교환 어플리케이션을 포함할 수 있다. 정보 교환 어플리케이션은, 예를 들면, 외부 전자 장치에 특정 정보를 전달하기 위한 노티피케이션 릴레이 어플리케이션, 또는 외부 전자 장치를 관리하기 위한 장치 관리 어플리케이션을 포함할 수 있다. 예를 들면, 알림 전달 어플리케이션은 전자 장치의 다른 어플리케이션에서 발생된 알림 정보를 외부 전자 장치로 전달하거나, 또는 외부 전자 장치로부터 알림 정보를 수신하여 사용자에게 제공할 수 있다. 장치 관리 어플리케이션은, 예를 들면, 전자 장치와 통신하는 외부 전자 장치의 기능(예: 외부 전자 장치 자체(또는, 일부 구성 부품)의 턴-온/턴-오프 또는 디스플레이의 밝기(또는, 해상도) 조절), 또는 외부 전자 장치에서 동작하는 어플리케이션을 설치, 삭제, 또는 갱신할 수 있다. 한 실시예에 따르면, 어플리케이션은 외부 전자 장치의 속성에 따라 지정된 어플리케이션(예: 모바일 의료 기기의 건강 관리 어플리케이션)을 포함할 수 있다. 한 실시예에 따르면, 어플리케이션은 외부 전자 장치로부터 수신된 어플리케이션을 포함할 수 있다. 프로그램 모듈의 적어도 일부는 소프트웨어, 펌웨어, 하드웨어(예: 프로세서), 또는 이들 중 적어도 둘 이상의 조합으로 구현(예: 실행)될 수 있으며, 하나 이상의 기능을 수행하기 위한 모듈, 프로그램, 루틴, 명령어 세트 또는 프로세스를 포함할 수 있다.Applications can be, for example, home, dialer, SMS/MMS, instant message (IM), browser, camera, alarm, contacts, voice dial, email, calendar, media player, album, watch, health care (eg exercise or measuring blood sugar) or environment information (eg, barometric pressure, humidity, or temperature information) providing application. According to an embodiment, the application may include an information exchange application capable of supporting information exchange between the electronic device and the external electronic device. The information exchange application may include, for example, a notification relay application for transmitting specific information to an external electronic device, or a device management application for managing the external electronic device. For example, the notification delivery application may transmit notification information generated by another application of the electronic device to the external electronic device or may receive notification information from the external electronic device and provide it to the user. The device management application may be, for example, a function of the external electronic device communicating with the electronic device (eg, turning on/off the external electronic device itself (or some component) or the brightness (or resolution) of the display. adjustment), or an application running in an external electronic device may be installed, deleted, or updated. According to an embodiment, the application may include an application designated according to a property of the external electronic device (eg, a health management application of a mobile medical device). According to an embodiment, the application may include an application received from an external electronic device. At least some of the program modules may be implemented (eg, executed) in software, firmware, hardware (eg, a processor), or a combination of at least two or more thereof, and a module, program, routine, set of instructions for performing one or more functions. or processes.

이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.The embodiments described above may be implemented by a hardware component, a software component, and/or a combination of a hardware component and a software component. For example, the apparatus, methods, and components described in the embodiments may include, for example, a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, a microcomputer, a field programmable gate (FPGA) array), a programmable logic unit (PLU), a microprocessor, or any other device capable of executing and responding to instructions, may be implemented using one or more general purpose or special purpose computers. The processing device may execute an operating system (OS) and one or more software applications running on the operating system. A processing device may also access, store, manipulate, process, and generate data in response to execution of the software. For convenience of understanding, although one processing device is sometimes described as being used, one of ordinary skill in the art will recognize that the processing device includes a plurality of processing elements and/or a plurality of types of processing elements. It can be seen that can include For example, the processing device may include a plurality of processors or one processor and one controller. Other processing configurations are also possible, such as parallel processors.

실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The method according to the embodiment may be implemented in the form of program instructions that can be executed through various computer means and recorded in a computer-readable medium. The computer-readable medium may include program instructions, data files, data structures, etc. alone or in combination. The program instructions recorded on the medium may be specially designed and configured for the embodiment, or may be known and available to those skilled in the art of computer software. Examples of the computer-readable recording medium include magnetic media such as hard disks, floppy disks and magnetic tapes, optical media such as CD-ROMs and DVDs, and magnetic such as floppy disks. - includes magneto-optical media, and hardware devices specially configured to store and execute program instructions, such as ROM, RAM, flash memory, and the like. Examples of program instructions include not only machine language codes such as those generated by a compiler, but also high-level language codes that can be executed by a computer using an interpreter or the like. The hardware devices described above may be configured to operate as one or more software modules to perform the operations of the embodiments, and vice versa.

소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.Software may comprise a computer program, code, instructions, or a combination of one or more thereof, which configures a processing device to operate as desired or is independently or collectively processed You can command the device. The software and/or data may be any kind of machine, component, physical device, virtual equipment, computer storage medium or apparatus, to be interpreted by or to provide instructions or data to the processing device. , or may be permanently or temporarily embody in a transmitted signal wave. The software may be distributed over networked computer systems and stored or executed in a distributed manner. Software and data may be stored in one or more computer-readable recording media.

이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.As described above, although the embodiments have been described with reference to the limited drawings, those skilled in the art may apply various technical modifications and variations based on the above. For example, the described techniques are performed in an order different from the described method, and/or the described components of the system, structure, apparatus, circuit, etc. are combined or combined in a different form than the described method, or other components Or substituted or substituted by equivalents may achieve an appropriate result.

그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 청구범위의 범위에 속한다.Therefore, other implementations, other embodiments, and equivalents to the claims are also within the scope of the following claims.

Claims (8)

전자 장치에 있어서,
메모리 (memory); 및 상기 메모리와 연결된 프로세서 (processor); 를 포함하고,
상기 프로세서는:
제1 아키텍처에서의 사용을 위한 제1 소스를 분석하여, 제2 아키텍처에서의 사용을 위하여 수정이 필요한 수정명령어를 도출하고,
도출된 상기 수정명령어를 기반으로 수정요청정보를 생성하고,
상기 제1 소스 및 상기 수정요청정보를 출력하고,
상기 수정요청정보를 기반으로 수정된 제2 소스를 입력받고,
상기 제2 소스를 기반으로 상기 제2 아키텍처를 위하여 컴파일하고,
상기 제1 소스 및 상기 제2 소스의 차이점에 기반하여 변경 전 제1 소스에 포함되는 제1 명령어 및 변경 후 제2 소스에 포함되는 제2 명령어를 포함하는 수정명령어세트를 생성하여 상기 메모리에 저장하고,
상기 메모리에 저장된 상기 수정명령어세트를 상기 제1 명령어에 기반하여 카운팅하고,
카운팅 결과에 기반하여, 카운팅 수가 기설정된 임계카운팅수를 초과하는 경우, 해당 제1 명령어가 포함되는 상기 수정명령어세트를 자동변환명령어세트로 설정하고,
카운팅 결과에 기반하여, 카운팅 수가 기설정된 임계카운팅수 이하인 경우, 해당 제1 명령어가 포함되는 상기 수정명령어세트를 추천변환명령어세트로 설정하고,
상기 수정명령어, 상기 자동변환명령어세트 및 상기 추천변환명령어세트를 기반으로 상기 수정요청정보를 생성하는 것을 특징으로 하는, 전자 장치.
In an electronic device,
memory; and a processor coupled to the memory. including,
The processor is:
Analyze the first source for use in the first architecture, and derive a correction instruction that needs to be modified for use in the second architecture,
Create correction request information based on the derived correction command,
output the first source and the modification request information;
receiving the second source modified based on the modification request information;
Compiling for the second architecture based on the second source,
Based on the difference between the first source and the second source, a correction instruction set including a first instruction included in the first source before the change and a second instruction included in the second source after the change is generated and stored in the memory do,
counting the correction instruction set stored in the memory based on the first instruction,
Based on the counting result, when the counting number exceeds a preset threshold counting number, the correction instruction set including the first instruction is set as an automatic conversion instruction set,
Based on the counting result, when the counting number is less than or equal to a preset threshold counting number, the correction instruction set including the first instruction is set as a recommended conversion instruction set,
The electronic device, characterized in that the correction request information is generated based on the correction instruction word, the automatic conversion instruction set, and the recommended conversion instruction set.
삭제delete 삭제delete 청구항 1에 있어서,
상기 프로세서는:
상기 제1 소스에서 상기 제1 아키텍처에서만 사용되는 비호환명령어를 추출하고,
상기 제1 소스에서 상기 제2 아키텍처에서도 사용되는 호환명령어를 추출하고,
상기 호환명령어를 상기 제2 아키텍처에 필수적으로 사용되는 필수호환명령어와 상기 제2 아키텍처에 비필수적으로 사용되는 비필수호환명령어를 구분하고,
상기 비호환명령어 및 상기 비필수호환명령어를 상기 수정명령어로 도출하는 것을 특징으로 하는, 전자 장치.
The method according to claim 1,
The processor is:
Extracting an incompatible instruction used only in the first architecture from the first source,
Extracting compatible instructions used in the second architecture from the first source,
Distinguish the compatible commands into essential compatible commands essential for the second architecture and non-essential compatible commands used non-essentially for the second architecture,
The electronic device, characterized in that the non-compatible command and the non-essential compatible command are derived as the correction command.
청구항 4에 있어서,
상기 프로세서는:
상기 비호환명령어, 상기 호환명령어를 기반으로 수정난이도를 산출하고,
상기 수정난이도가 기설정된 임계수정난이도 이하인 경우, 상기 자동변환명령어세트에 대응하는 제1 명령어를 제2 명령어로 자동으로 수정하고, 상기 비호환명령어 및 상기 비필수호환명령어와 상기 비호환명령어 및 상기 비필수호환명령어에 대응하는 상기 추천변환명령어세트를 기반으로 상기 수정요청정보를 생성하고,
상기 수정난이도가 상기 임계수정난이도를 초과하는 경우, 상기 비호환명령어 및 상기 비필수호환명령어와 상기 비호환명령어 및 상기 비필수호환명령어에 대응하는 상기 자동변환명령어세트 및 상기 추천변환명령어세트를 기반으로 상기 수정요청정보를 생성하는 것을 특징으로 하는, 전자 장치.
5. The method according to claim 4,
The processor is:
Calculating the correction difficulty based on the incompatible command and the compatible command,
When the correction difficulty is less than or equal to a preset threshold correction difficulty, the first instruction corresponding to the automatic conversion instruction set is automatically modified into a second instruction, and the incompatible instruction and the non-essential compatible instruction and the incompatible instruction and the Generate the correction request information based on the recommended conversion instruction set corresponding to the non-essential compatible instruction,
When the correction difficulty exceeds the threshold correction difficulty, the automatic conversion instruction set and the recommended conversion instruction set corresponding to the incompatible instruction and the non-essential compatible instruction and the incompatible instruction and the non-essential compatible instruction. The electronic device, characterized in that for generating the modification request information.
전자 장치의 동작 방법에 있어서,
상기 전자 장치가:
제1 아키텍처에서의 사용을 위한 제1 소스를 분석하여, 제2 아키텍처에서의 사용을 위하여 수정이 필요한 수정명령어를 도출하는 단계;
도출된 상기 수정명령어를 기반으로 수정요청정보를 생성하는 단계;
상기 제1 소스 및 상기 수정요청정보를 출력하는 단계;
상기 수정요청정보를 기반으로 수정된 제2 소스를 입력받는 단계;
상기 제2 소스를 기반으로 상기 제2 아키텍처를 위하여 컴파일하는 단계;
상기 제1 소스 및 상기 제2 소스의 차이점에 기반하여 변경 전 제1 소스에 포함되는 제1 명령어 및 변경 후 제2 소스에 포함되는 제2 명령어를 포함하는 수정명령어세트를 생성하여 상기 전자 장치의 메모리에 저장하는 단계;
상기 메모리에 저장된 상기 수정명령어세트를 상기 제1 명령어에 기반하여 카운팅하는 단계;
카운팅 결과에 기반하여, 카운팅 수가 기설정된 임계카운팅수를 초과하는 경우, 해당 제1 명령어가 포함되는 상기 수정명령어세트를 자동변환명령어세트로 설정하는 단계;
카운팅 결과에 기반하여, 카운팅 수가 기설정된 임계카운팅수 이하인 경우, 해당 제1 명령어가 포함되는 상기 수정명령어세트를 추천변환명령어세트로 설정하는 단계; 및
상기 수정명령어, 상기 자동변환명령어세트 및 상기 추천변환명령어세트를 기반으로 상기 수정요청정보를 생성하는 단계; 를 포함하는, 동작 방법.
A method of operating an electronic device, comprising:
The electronic device is:
analyzing the first source for use in the first architecture, and deriving a correction instruction that needs to be modified for use in the second architecture;
generating correction request information based on the derived correction command;
outputting the first source and the modification request information;
receiving a second source modified based on the modification request information;
compiling for the second architecture based on the second source;
Based on the difference between the first source and the second source, a correction instruction set including a first instruction included in the first source before the change and the second instruction included in the second source after the change is generated based on the difference between the first source and the second source, and storing in memory;
counting the correction instruction set stored in the memory based on the first instruction;
based on the counting result, when the counting number exceeds a preset threshold counting number, setting the correction instruction set including the first instruction as an automatic conversion instruction set;
based on a counting result, when the counting number is less than or equal to a preset threshold counting number, setting the correction instruction set including the first instruction as a recommended conversion instruction set; and
generating the correction request information based on the correction instruction, the automatic conversion instruction set, and the recommended conversion instruction set; Including, a method of operation.
제 6 항에 기재된 동작 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체.
A computer-readable recording medium in which a program for executing the operating method according to claim 6 is recorded.
제 6 항에 기재된 동작 방법을 실행시키기 위해 컴퓨터 판독 가능한 기록 매체에 기록된 프로그램.A program recorded on a computer-readable recording medium for executing the operating method according to claim 6.
KR1020220037869A 2022-03-17 2022-03-28 Apparatus and method of providing solution of source transformation for architectural changes KR102405886B1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020220067011A KR20220082788A (en) 2022-03-17 2022-05-31 method for changing architecture and its systems
KR1020220066992A KR20220082787A (en) 2022-03-17 2022-05-31 device for architectural changes
PCT/KR2022/010705 WO2023177024A1 (en) 2022-03-17 2022-07-21 Device and method for providing source transformation solution for architecture change

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR20220033071 2022-03-17
KR1020220033071 2022-03-17
KR1020220033709 2022-03-18
KR20220033709 2022-03-18

Related Child Applications (2)

Application Number Title Priority Date Filing Date
KR1020220067011A Division KR20220082788A (en) 2022-03-17 2022-05-31 method for changing architecture and its systems
KR1020220066992A Division KR20220082787A (en) 2022-03-17 2022-05-31 device for architectural changes

Publications (1)

Publication Number Publication Date
KR102405886B1 true KR102405886B1 (en) 2022-06-08

Family

ID=81981992

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020220037869A KR102405886B1 (en) 2022-03-17 2022-03-28 Apparatus and method of providing solution of source transformation for architectural changes
KR1020220067011A KR20220082788A (en) 2022-03-17 2022-05-31 method for changing architecture and its systems
KR1020220066992A KR20220082787A (en) 2022-03-17 2022-05-31 device for architectural changes

Family Applications After (2)

Application Number Title Priority Date Filing Date
KR1020220067011A KR20220082788A (en) 2022-03-17 2022-05-31 method for changing architecture and its systems
KR1020220066992A KR20220082787A (en) 2022-03-17 2022-05-31 device for architectural changes

Country Status (2)

Country Link
KR (3) KR102405886B1 (en)
WO (1) WO2023177024A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023177024A1 (en) * 2022-03-17 2023-09-21 주식회사 넷아스 Device and method for providing source transformation solution for architecture change

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06309193A (en) * 1993-04-27 1994-11-04 Toshiba Corp Method and device for verifying operation of machine language program
JPH10222381A (en) 1997-01-30 1998-08-21 Xerox Corp Data processing system
JP2005532634A (en) 2002-07-05 2005-10-27 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. Web service architecture and method
KR20060033912A (en) * 2003-07-15 2006-04-20 트랜시티브 리미티드 Shared code caching method and apparatus for program code conversion
JP2007524148A (en) 2003-06-17 2007-08-23 デジタルネット・ガヴァーンメント・ソリューションズ・エルエルシー Trusted computer system
KR20090107062A (en) * 2003-05-02 2009-10-12 인터내셔널 비지네스 머신즈 코포레이션 Improved architecture for generating intermediate representations for program code conversion
KR20120031756A (en) 2010-09-27 2012-04-04 삼성전자주식회사 Method and apparatus for compiling and executing application using virtualization in heterogeneous system using cpu and gpu

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2442497B (en) * 2006-10-02 2010-03-31 Transitive Ltd Method and apparatus for administering a process filesystem with respect to program code conversion
JP7433097B2 (en) * 2020-03-19 2024-02-19 三菱電機株式会社 Generation device, generation method, and generation program
KR102405886B1 (en) * 2022-03-17 2022-06-08 주식회사 넷아스 Apparatus and method of providing solution of source transformation for architectural changes

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06309193A (en) * 1993-04-27 1994-11-04 Toshiba Corp Method and device for verifying operation of machine language program
JPH10222381A (en) 1997-01-30 1998-08-21 Xerox Corp Data processing system
JP2005532634A (en) 2002-07-05 2005-10-27 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. Web service architecture and method
KR20090107062A (en) * 2003-05-02 2009-10-12 인터내셔널 비지네스 머신즈 코포레이션 Improved architecture for generating intermediate representations for program code conversion
JP2007524148A (en) 2003-06-17 2007-08-23 デジタルネット・ガヴァーンメント・ソリューションズ・エルエルシー Trusted computer system
KR20060033912A (en) * 2003-07-15 2006-04-20 트랜시티브 리미티드 Shared code caching method and apparatus for program code conversion
KR20120031756A (en) 2010-09-27 2012-04-04 삼성전자주식회사 Method and apparatus for compiling and executing application using virtualization in heterogeneous system using cpu and gpu

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023177024A1 (en) * 2022-03-17 2023-09-21 주식회사 넷아스 Device and method for providing source transformation solution for architecture change

Also Published As

Publication number Publication date
WO2023177024A1 (en) 2023-09-21
KR20220082788A (en) 2022-06-17
KR20220082787A (en) 2022-06-17

Similar Documents

Publication Publication Date Title
KR102319803B1 (en) Electronic device, operating method thereof and recording medium
KR102493491B1 (en) Electric device for measuring biometric information and method for operating the same
KR102401932B1 (en) Electronic device measuring biometric information and method of operating the same
US11838445B2 (en) Electronic apparatus for providing voice recognition control and operating method therefor
US10761498B2 (en) Electronic device and method for operating the same
US10430077B2 (en) Cover device and electronic device including cover device
KR102369126B1 (en) Apparatus and Method for Providing Memo Function
KR102358849B1 (en) Electronic device for providing information related to a smart watch and method for operating the same
KR20160114930A (en) Module recognition method and electronic device performing thereof
KR102343990B1 (en) Device For Controlling Respectively Multiple Areas of Display and Method thereof
US20170193276A1 (en) Electronic device and operating method thereof
KR20180018196A (en) Electronic apparatus and operating method thereof
KR20180024626A (en) method for display time information in low power state and electronic device including the same
US11322158B2 (en) Electronic device and communication connection method using voice thereof
KR102405886B1 (en) Apparatus and method of providing solution of source transformation for architectural changes
KR20170119948A (en) Electronic device and controlling method thereof
KR102323797B1 (en) Electronic device and method for sharing information of the same
US10261744B2 (en) Method and device for providing application using external electronic device
US20170075415A1 (en) Electronic device using information on skin color type and control method thereof
KR20180106221A (en) Method for providing graphic effect corresponding to configuration information of object and electronic device thereof
KR20170044849A (en) Electronic device and method for transforming text to speech utilizing common acoustic data set for multi-lingual/speaker
EP3407671B1 (en) Method and electronic device for network connection
KR20220115041A (en) method of operating an online platform for trading fitness products through a server
KR102406483B1 (en) method of operation and control system of multi-processor
KR102703875B1 (en) Method for generating a recommended medical device list and its electronic devices

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
A107 Divisional application of patent
GRNT Written decision to grant