G06F8/4434

Secure software system for microcontroller or the like and method therefor

In one form, a software system includes a first non-transitory computer readable medium storing a source code program, a second computer readable medium, and a compiler. The first non-transitory computer readable medium includes a first function having a return type greater than a native width of a target processor, and a second function that calls the first function and that conditionally branches based on comparing a returned value from the first function to an expected value, wherein the expected value has first and second portions that are not equal to zero and are not equal to each other. The compiler converts the source code program in the first non-transitory computer readable medium into a machine language program for storage in the second computer readable medium. The compiler optimizes the source code program by selectively combining a set of redundant machine language instructions into a smaller set of machine language instructions.

Information processing apparatus, computer-readable recording medium storing therein compiler program, and compiling method
11231917 · 2022-01-25 · ·

An information processing apparatus includes a memory; and a processor coupled to the memory and the processor configured to when source code includes an instruction for storing units of data in an area of an N-dimensional variable-length array (N being an integer and a value of N being equal to or greater than 2), generate object code in the memory to cause the units of data to be stored in an area of an N-dimensional fixed-length array instead of the area of the N-dimensional variable-length array, and when the source code includes an instruction for successively accessing the unit of data stored in the area of the N-dimensional variable-length array, generate the object code in the memory to cause the units of data stored in the area of the N-dimensional fixed-length array to be stored contiguously in an area of a one-dimensional fixed-length array.

DE-DUPLICATION OF LOCALIZED RESOURCES

In a device for de-duplicating localized resources including a processor and a memory in communication with the processor, the memory includes executable instructions that, when executed by the processor, cause the processor to control the device to perform functions of accessing, from a data storage, a source resource package and a localized resource package containing first and second resources, respectively; filtering the localized resource package to identify the second resources that are not duplicates of the first resources; creating, based on the first resources, a language-neutral resource collection including a plurality of language-neutral resources; creating a localized resource collection including the second resources that are not duplicates of the first resources; and creating a deployment resource package containing the language-neutral and localized resource collections.

Allocating Variables to Computer Memory
20220019531 · 2022-01-20 ·

A method of allocating variables to computer memory includes determining at compile time when each of the plurality of variables is live in a memory region and allocating a memory region to each variable wherein at least some variables are allocated at compile time to overlapping memory regions to be stored in those memory regions at runtime at non-overlapping times.

METHODS AND APPARATUS TO PERFORM AUTOMATIC COMPILER OPTIMIZATION TO ENABLE STREAMING-STORE GENERATION FOR UNALIGNED CONTIGUOUS WRITE ACCESS

Methods, apparatus, systems and articles of manufacture (e.g., computer readable storage media) to perform automatic compiler optimization to enable streaming-store generation for unaligned contiguous write access are disclosed. Example apparatus disclosed herein are to mark a store instruction in source program code as a transformation candidate when the store instruction is associated with a group of memory accesses that are unaligned with respect to a size of a cache line in a cache. Disclosed apparatus are also to transform the store instruction that is marked as the transformation candidate to form transformed program code when a non-temporal property is satisfied, the transformed program code to replace the store instruction with (i) a write to a buffer in the cache and (ii) a streaming-store instruction that is to write contents of the buffer to memory.

Determining when to perform and performing runtime binary slimming

One or more execution traces of an application are accessed. The one or more execution traces have been collected at a basic block level. Basic blocks in the one or more execution traces are scored. Scores for the basic blocks represent benefits of performing binary slimming at the corresponding basic blocks. Runtime binary slimming is performed of the application based on the scores of the basic blocks.

IDENTIFYING CODE DEPENDENCIES IN WEB APPLICATIONS

A method may include receiving, from a browser, a request for a tracking pixel including a uniform resource locator (URL) of the tracking pixel and a session identifier (ID) of the browser. The URL of the tracking pixel may be included in a CSS selector. The method may further include sending, to the browser and as triggered by the request for the tracking pixel, a request to scan a document object model (DOM) of the browser. The request to scan the DOM may include the session ID. The method may further include receiving, from the browser, scan results including a set of dependencies on the CSS selector

Information processing apparatus, non-transitory computer-readable medium, and information processing method
11163570 · 2021-11-02 · ·

An information processing apparatus includes: a memory; and a processor configured to: acquire an instruction sequence including plural instructions; generate plural candidates of new instruction sequences capable of obtaining an execution result as same as in the instruction sequence, by replacing at least a part of plural nop instructions included in the instruction sequence with a wait instruction that waits for completion of all preceding instructions; delete any one of the nop instructions and the wait instruction from each of the new instruction sequences, when the execution result does not change in case any one of the nop instructions and the wait instruction is deleted from the new instruction sequences in the candidates; and select a one candidate among the candidates subjected to the delete, the one candidate including the number of instructions equal to or less than a certain number, and having a smallest number of execution cycles.

Deterministic memory allocation for real-time applications
11755298 · 2023-09-12 · ·

Deterministic memory allocation for real-time applications. In an embodiment, bitcode is scanned to detect calls by a memory allocation function to a dummy function. Each call uses parameters comprising an identifier of a memory pool and a size of a data type to be stored in the memory pool. For each detected call, an allocation record, comprising the parameters, is generated. Then, a header file is generated based on the allocation records. The header file may comprise a definition of bucket(s) and a definition of memory pools. Each definition of a memory pool may identify at least one bucket.

Tracing engine-based software loop escape analysis and mixed differentiation evaluation

A method for loop escape analysis includes receiving a set of executable computer instructions stored on a storage medium, and determining a number of inputs to a loop associated with a data structure, storage space that would be saved by compressing the data structure, and a size of new elements required to compress the data structure. Upon reaching an end of the loop, the method determines whether to compress the data structure based on a comparison between the size of the new elements and the saved storage space. In response to determining to compress the data structure, the method compresses the data structure.