Verificación de límites en tiempo de compilación para tipos definidos por el usuario.
Un medio de almacenamiento no transitorio legible por ordenador configurado con datos y con instrucciones que cuando son ejecutados en al menos un procesador hacen que el(los) procesador(es) realice(n) un proceso para verificar límites en tiempo de compilación de tipos definidos por el usuario (204),
comprendiendo el proceso las siguientes etapas realizadas durante la compilación de un programa desde un código fuente a través de un código de lenguaje intermedio hasta un código ejecutable:
identificar en el código fuente (122) una clase definida por el usuario (202) para acceder de forma segura a la memoria, es decir, una clase definida por el usuario (202) que tiene como miembro anotado un código de acceso a la memoria que está anotado con una anotación de verificación de límites definidos por el usuario (206) y también tiene como otro miembro anotado un miembro que proporciona un límite que se anota para indicar que proporciona información de límite para generar una verificación de límites en el código de acceso a la memoria;
la anotación de verificación de límites definidos por el usuario (206) comprende una anotación que indica al compilador que el código accede a un búfer mapeado en memoria u otra memoria asignada explícitamente;
insertar (304) en el código de lenguaje intermedio (124) una representación de verificación de límites (220) de la anotación de verificación de límites definidos por el usuario (206), siendo realizada la inserción durante la compilación del código fuente anotado correspondiente y siendo lograda la inserción (304) utilizando al menos uno de árboles de análisis, árboles de sintaxis abstracta, atributos y vectores auxiliares generalizados para representar la anotación de verificación de límites definidos por el usuario;
aplicar, al código de lenguaje intermedio y/o al código ejecutable, una optimización (228) que reduce la verificación de límites duplicada que de otro modo ocurriría en el código ejecutable (126);
en el que la aplicación de la optimización comprende determinar que todos los accesos dentro de un bucle a una variable de la clase definida por el usuario (204) están dentro de los límites de dirección de memoria permitidos de la variable y, en respuesta a esto, eliminar múltiples verificaciones de límites que de otro modo ocurrirían como un resultado de la ejecución del bucle, en el que la optimización se logra determinando analíticamente que un acceso a la memoria, que está sujeto a la verificación de límites, no puede asumir un valor durante la ejecución, lo que daría lugar a un acceso a la memoria fuera de los límites permitidos.
Tipo: Patente Internacional (Tratado de Cooperación de Patentes). Resumen de patente/invención. Número de Solicitud: PCT/US2011/051023.
Solicitante: Microsoft Technology Licensing, LLC.
Nacionalidad solicitante: Estados Unidos de América.
Dirección: ONE MICROSOFT WAY REDMOND, WA 98052 ESTADOS UNIDOS DE AMERICA.
Inventor/es: HARVEY,DANIEL STEPHEN.
Fecha de Publicación: .
Clasificación Internacional de Patentes:
- G06F8/41 FISICA. › G06 CALCULO; CONTEO. › G06F PROCESAMIENTO ELECTRICO DE DATOS DIGITALES (sistemas de computadores basados en modelos de cálculo específicos G06N). › G06F 8/00 Disposiciones para la ingeniería del software (comprobación o depuración G06F 11/36; aspectos administrativos, de planificación u organización de la gestión de proyectos software G06Q 10/06). › Compilación.
PDF original: ES-2733516_T3.pdf
Patentes similares o relacionadas:
Ejecución del programa sobre plataforma heterogénea, del 29 de Abril de 2020, de UNIVERSITEIT GENT: Un método puesto en práctica por ordenador que comprende: - obtener un objeto de código informático intermedio que comprende, al menos, un […]
Sistemas y métodos para sincronización de datos y gestión de conmutación por error, del 19 de Febrero de 2020, de IEX Group, Inc: Un método para ejecutar una aplicación de forma expeditiva en al menos un procesador informático, comprendiendo el método: ejecutar simultáneamente una pluralidad de instancias […]
Transformar especificadores de instrucción no contiguos a especificadores de instrucción contiguos, del 19 de Febrero de 2020, de INTERNATIONAL BUSINESS MACHINES CORPORATION: Un producto de programa informático para emular instrucciones en un entorno informático, comprendiendo el producto de programa informático: un medio de almacenamiento […]
Método para cargar un código nativo en un elemento de seguridad, del 4 de Diciembre de 2019, de Thales Dis France SA: Método para corregir al menos un error localizado en un código nativo de al menos un elemento de seguridad objetivo cargando al menos una […]
Método de compilación óptima de un comando de PLC, del 27 de Noviembre de 2019, de LSIS Co., Ltd: Un método para compilar un comando de PLC, controlador lógico programable, el método que comprende: elegir un esquema de procesamiento de compilación de una pluralidad […]
Dispositivo terminal de radio definida por software y método para distribuir e instalar aplicación de radio, del 4 de Septiembre de 2019, de Industry-University Cooperation Foundation Hanyang University: Dispositivo terminal de radio definida por software (SDR) que se configura de manera adaptativa según una aplicación de radio, comprendiendo el […]
Dispositivo y método de soporte de la generación de código de programa, dispositivo y método de ejecución del programa, y dispositivo y método de procesamiento de la compresión del código de programa y programa para el mismo, del 9 de Abril de 2019, de MITSUBISHI DENKI KABUSHIKI KAISHA: Un dispositivo de procesamiento de compresión de código de programa, para compresión de código de programa que está constituido por un código de ejecución descrito por una notación […]