Source Code to Machine Code Mapping via Marker Insertion

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Debugging machine code instructions is challenging due to their complexity, requiring knowledge of machine code semantics, making it difficult for programmers to set breakpoints effectively.

Innovation Solution

A method and system for mapping a location in source code to a corresponding location in machine code by inserting a marker, such as an exit function call, allowing compilation to stop at specific points, enabling breakpoint insertion in a more natural and efficient manner using high-level source code interactions.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If programmers directly debug machine code instructions, then debugging capability is achieved, but the complexity of the debugging process increases and requires deep knowledge of machine code semantics

Engineering Contradiction:
Improvedebugging capabilityVSAvoiddebugging process complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent introduces source code as an intermediary layer between the programmer and machine code. The mapping mechanism translates high-level source code locations to low-level machine code instructions, allowing programmers to debug using familiar source code syntax without directly interacting with complex machine code semantics. This intermediary approach maintains debugging reliability while reducing process complexity.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent segments the debugging process into two distinct layers: source code level operations and machine code level operations. By maintaining separate representation spaces for source code and machine code with a mapping relationship between them, the system allows programmers to work at the higher-level source code abstraction while the system handles the translation to machine code instructions, effectively reducing the complexity exposed to the programmer.

Inventive Principle:
Principle #1Segmentation

2Ease of operation

If programmers use source code for debugging, then ease of operation improves, but the ability to precisely control and identify machine code execution points deteriorates

Engineering Contradiction:
Improvedebugging easeVSAvoidexecution point identification precision
Core Design Contradiction:
Ease of operationVSMeasurement precision

Solution Approach 1:

The mapping mechanism serves as an intermediary that preserves precision while maintaining ease of operation. It translates source code location identifiers (line numbers, function names) to corresponding machine code instruction addresses, enabling programmers to specify breakpoints using high-level source code references without losing the precision needed to identify exact machine code execution points. The mapping maintains a one-to-one correspondence relationship that preserves locational accuracy.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The system performs preliminary mapping of source code locations to machine code instructions before the debugging session begins. This pre-computed mapping table allows the debugger to quickly translate high-level source code breakpoints into precise machine code addresses during runtime, eliminating the need for programmers to manually calculate or understand machine code addresses while maintaining exact execution point identification.

Inventive Principle:
Principle #10Preliminary action

3Productivity

If machine code is optimized, then execution efficiency improves, but the correspondence between source code and machine code deteriorates making debugging difficult

Engineering Contradiction:
Improveexecution efficiencyVSAvoidsource-machine code correspondence
Core Design Contradiction:
ProductivityVSLoss of information

Solution Approach 1:

The mapping mechanism acts as an intermediary that preserves source-code-to-machine-code correspondence even through optimization transformations. When machine code is optimized (reordered, inlined, or transformed), the mapping table is updated to reflect the new instruction addresses while maintaining the relationship to original source code locations. This allows the debugger to present optimized machine code execution to the programmer through the stable source code interface, preserving both execution efficiency and debuggability.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The system performs preliminary mapping of source code to machine code instructions before optimization, and then maintains this mapping through the optimization process. The mapping table is generated in advance and updated as needed during optimization, allowing the debugger to track transformed instructions back to their original source code locations. This preliminary mapping approach ensures that even heavily optimized code maintains traceable correspondence with the source code.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentEP4191417B1Systems and methods for automapping source code to machine code
Publication Date: 2024.08.14 SAMSUNG ELECTRONICS CO LTD
  • EP4191417B1 patent drawingFigure 1
  • EP4191417B1 patent drawingFigure 2
  • EP4191417B1 patent drawingFigure 3

AI summary

Systems and methods for mapping a location in a source code (112) to a location in a machine code (110) are disclosed. An identifier of the source code (112) and an identifier of a first location of the source code (112) are received. A marker (302) is inserted in association with the source code (112) based on the identifier of the first location. The source code (112) is compiled into machine code (110). A second location associated with the marker (302) is identified in the machine code (110). A third location is returned based on identifying the second location.