Sunday 29 October 2017

Mips Instruction Set Binary Options


Hmm, parece más fácil que eso. - b elf32-tradlittlemips no funciona porque el archivo no es un ejecutable ELF, sino binario. Por lo tanto, la opción correcta a utilizar es-b binario. La otra opción, - mmips hace objdump reconocer el archivo como binario para MIPS. Dado que la máquina de destino es little endian, también tuve que añadir - EL para que la salida coincidiera con la salida de x. o. - mmips sólo incluye el conjunto de instrucciones básicas. El AR7 tiene un procesador MIPS32 que tiene más instrucciones que sólo mips. Para descodificar estas instrucciones MIPS32 más recientes, utilice - mmips: isa32. Se puede listar una lista de ISA disponibles con objdump - i - m. El comando final se convierte en: Esto mostraría registros como 3 en lugar de sus nombres. Para ajustar eso, utilicé las opciones adicionales siguientes que se mencionan en mipsel-linux-gnu-objdump --help: Elegí para mips32 después de leer: veo tu archivo de objeto xo es sólo un maniquí, y you39re tirando de las secciones de vmlinux . Eso es algo raro que siempre he podido ejecutar objdump en vmlinux. Para varias arquitecturas: MIPS, ARM. ¿Qué hace que mipsel-linux-gnu-objdump escupir si sólo lo llaman con - d vmlinux. Sin esos otros argumentos También: file vmlinux. Ndash Kaz Mar 28 12 a las 21: 59Mars 4.0 fue lanzado en agosto de 2010. Mejoras y correcciones de errores incluyen: Próximamente: nuevo editor de texto (tan pronto como resolver problemas de pantalla en Mac). Ayuda de instrucción mejorada: Todos los ejemplos de instrucciones de las fichas de ayuda (y las nuevas guías de instrucciones emergentes) utilizan ahora nombres de registro realistas, p. T1, t2, en lugar de 1, 2. La tecla de formato de instrucción mostrada encima de las pestañas de ayuda de MIPS se ha ampliado para incluir explicaciones de los diversos modos de direccionamiento para instrucciones de carga y almacenamiento y pseudoinstrucciones. Se han añadido descripciones a cada ejemplo de instrucción y pseudo-instrucción. Capacidad de error de ensamblaje mejorada: Si la operación de montaje genera errores, el primer mensaje de error en el área de texto Mensajes de Marte será resaltado y la instrucción errónea correspondiente se seleccionará en el editor de texto. Además, puede hacer clic en cualquier mensaje de error en el área de texto Mensajes de Marte para seleccionar la instrucción errónea correspondiente en el editor de texto. La primera característica no se selecciona en cada situación (por ejemplo, cuando se monta-on-open se establece), pero en las situaciones en las que no funciona ningún daño se hace más la segunda característica, haciendo clic en mensajes de error, todavía se puede utilizar. Las entradas de consola syscalls (5, 6, 7, 8, 12) ejecutadas en el IDE reciben ahora pulsaciones de entrada directamente en el área de texto Run I / O en lugar de a través de un diálogo de entrada emergente. Gracias a Ricardo Pascual por proporcionar esta función Si prefiere los diálogos emergentes, hay un ajuste para restaurarlos. Las operaciones de piso, ceil, trunc y round ahora producen el resultado predeterminado MIPS 231-1 si el valor es infinito, NaN o fuera del rango de 32 bits. Por coherencia, las operaciones sqrt ahora producen el resultado NaN si el operando es negativo (en lugar de elevar una excepción). Estos casos son todos consistentes con el indicador de operación no válida de FCSR (control de FPU y registro de estado) desactivado. La solución ideal sería simular el propio registro FCSR para que todas las especificaciones MIPS para instrucciones de coma flotante se puedan implementar, pero eso no ha ocurrido todavía. La columna Básica en la ventana de segmento de texto ahora muestra datos y direcciones en decimales o hexadecimales, dependiendo de la configuración actual. Tenga en cuenta que la dirección en las instrucciones de la rama es en realidad un desfase en relación con la PC, por lo que se trata como datos no dirección. Dado que los operandos de datos en las instrucciones básicas no tienen más de 16 bits de longitud, su visualización hexadecimal incluye sólo 4 dígitos. La columna Origen de la ventana Segmento de texto ahora preserva el espaciado de tabulación para un aspecto más limpio (los caracteres de tabulación no se renderizaban previamente). Los mnemónicos de instrucción pueden usarse ahora como etiquetas, p. B La nueva syscall 36 mostrará un número entero como un decimal sin signo. Una nueva herramienta, Digital Lab Sim, aportada por Didier Teifreto (dteifretolifc. univ-fcomte. fr). Esta herramienta cuenta con dos pantallas de siete segmentos, un teclado hexadecimal y un contador. Utiliza MMIO para explorar E / S de interrupción en un entorno atractivo. Más información está disponible en su función de ayuda. Muchas gracias MARS 4.0 requiere Java 1.5 (5.0) en lugar de 1.4. Si esto es un problema para usted, hágamelo saber. Mars 3.8 fue lanzado en enero de 2010. Las mejoras y correcciones de errores incluyen: Una nueva característica para suspender temporalmente los puntos de interrupción que ha establecido previamente. Utilícelo cuando se sienta lo suficientemente seguro como para ejecutar su programa sin los puntos de interrupción pero no lo suficiente como para borrarlos. Utilice el elemento Cambiar puntos de interrupción en el menú Ejecutar o simplemente haga clic en el encabezado de columna Bkpt en la ventana Segmento de texto. Repita, para volver a activar. Dos nuevas herramientas aportadas por Ingo Kofler de la Universidad de Klagenfurt en Austria. Uno genera estadísticas de instrucciones y el otro simula la predicción de sucursal utilizando una tabla de historial de sucursales. Dos nuevos syscalls de impresión. Syscall 34 imprime un número entero en formato hexadecimal. Syscall 35 imprime un entero en formato binario. Sugerido por Bernardo Cunha de Portugal. Un nuevo ajuste para controlar si el contador de programa MIPS se inicializará o no en la instrucción con etiqueta global principal si existe tal declaración. Si la configuración está desmarcada o si está marcada y no hay principal, el contador del programa se inicializará a la dirección de inicio predeterminada. El lanzamiento 3.7 fue programado para inicializarlo automáticamente a la declaración etiquetada principal. Esto condujo a problemas con los programas que usan el SPIM excepción excepcional de manejador de excepciones. s porque incluye una breve secuencia de instrucciones en la dirección de inicio predeterminada para hacer alguna inicialización y luego ramificación a principal. Bajo 3.7 la secuencia de inicialización estaba siendo anulada. De manera predeterminada, esta opción está desmarcada. Esta opción se puede especificar en el modo de comando usando la opción sm (Inicio en el Principal). Las herramientas de Marte que existen fuera de Marte ahora se pueden incluir en el menú Herramientas colocándolas en un JAR e incluidas en un comando que lance el IDE de Marte. Por ejemplo: java - cp plugin. jarMars. jar Marte Gracias a Ingo Kofler por pensar en esta técnica y proporcionar el parche para implementarlo. Correcciones y mejoras generales a los syscalls MIDI. Gracias a Max Hailperin del Colegio Gustavus Adolphus por suministrarlos. Corrección a un error de ensamblador que marcaba instrucciones MIPS no identificadas erróneamente como directivas. Mars 3.7 fue lanzado en agosto de 2009. Las mejoras y correcciones de errores incluyen: Una nueva característica para cambiar la configuración de espacio de direcciones de la máquina simulada MIPS. La configuración de espacio de direcciones de 32 bits utilizada por todas las versiones anteriores sigue siendo la predeterminada. Hemos definido dos configuraciones alternativas para un espacio de direcciones compacto de 32KB. Uno comienza el segmento de texto en la dirección 0 y el otro comienza el segmento de datos en la dirección 0. Un espacio de direcciones de 32 KB permite las pseudoinstrucciones de carga / almacenamiento comúnmente usadas usando etiquetas, tales como lw t0, incremento. Para expandirse a una sola instrucción básica ya que la dirección completa de las etiquetas encajará en el campo de desplazamiento de direcciones de 16 bits sin extensión de signo a un valor negativo. Esto se hizo en respuesta a varias solicitudes a lo largo de los años para direcciones más pequeñas y expansiones simplificadas para facilitar la comprensión de los programas de ensamblaje. Esta versión no incluye la posibilidad de definir su propia configuración personalizada, aunque anticipamos su adición en el futuro. Está disponible tanto a través del modo de comando (opción mc) como del IDE. Consulte Configuración de la memoria. En la parte inferior del menú Configuración. Relacionado con el elemento anterior: cargar y almacenar pseudoinstrucciones de la forma lw t0, label y lw t0, la etiqueta (t1) se expandirá a una sola instrucción (addi para estos ejemplos) si la configuración actual de la memoria asegura la dirección completa de las etiquetas Encajar en los 15 bits de bajo orden. Instrucciones para las cuales esto fue implementado son: la, lw, lh, lb, lhu, lbu, lwl, lwr, ll, lwc1, ldc1, ls, ld, sw, sh, swb, swl, Ss y sd Si un archivo contiene una etiqueta global de la etiqueta principal (sin comillas, sensible a mayúsculas y minúsculas), la ejecución comenzará en esa sentencia independientemente de su dirección. Anteriormente, la ejecución del programa siempre se iniciaba en la dirección base del segmento de texto. Esto será útil para proyectos de varios archivos porque ya no necesitará tener el archivo principal abierto en el editor para ejecutar el proyecto. Tenga en cuenta que main tiene que ser declarado global utilizando la directiva. globl. Hemos añadido una función de búsqueda / sustitución al editor. Esta ha sido otra solicitud frecuente. Acceder a ella a través del menú Editar o Ctrl-F. Busque mejoras importantes en el editor en 2010 Las syscalls para Open File (13), Read from File (14) y Write to File (15) ahora colocan su valor de retorno en el registro v0 en lugar de a0. La tabla de Organización y diseño de la computadora s Apéndice B en SPIM especifica a0, pero SPIM utiliza constantemente v0 para los valores devueltos. Las pseudoinstrucciones para div, divu, mulo, mulo, rem, remu, seq, sne, sge, sgeu, sgt, sgtu, sle, sleu ahora aceptan un 16 ó 32 bits de inmediato como su tercer operando. Anteriormente el tercer operando tenía que ser un registro. Las herramientas existentes se probaron utilizando el espacio de direcciones de memoria reconfigurado (véase el primer elemento). Hizo algunas adaptaciones a la herramienta Keyboard and Display Simulator que permite utilizarlo para la memoria de E / S (MMIO) incluso bajo el modelo de memoria compacta, donde la dirección base MMIO es 0x00007f00 en lugar de 0xffff0000. Resaltar no es perfecto en este escenario. Corrección de errores: La syscall para Open File (13) invirtió los significados de los términos mode y flag. Los indicadores se utilizan para indicar el uso previsto del archivo (lectura / escritura). Modo se utiliza para establecer permisos de archivo en situaciones específicas. MARS implementa banderas seleccionadas como soportadas por flujos de archivos Java e ignora el modo si se especifica. Para obtener más detalles, consulte la pestaña Syscalls en la Ayuda. Se ha corregido el ejemplo del archivo en esa pestaña. Corrección de errores: El ensamblador generó incorrectamente un error en las instrucciones de salto localizadas en el segmento de texto del kernel. Corrección de errores: La opción de proyecto (p) en la interfaz de comandos funcionaba incorrectamente cuando se invocaba MARS dentro del directorio que contenía los archivos a ensamblar. Reconocimiento: El desarrollo de la Versión 3.7 fue apoyado por una Subvención de Proyectos Especiales del SIGCSE. Mejoras y correcciones de errores incluyen: Weve finalmente implementó la nueva característica más solicitada: las celdas de memoria y registro se resaltarán cuando se escriban durante la simulación de tiempo o escalonada La celda de memoria / registro resaltada Representa el resultado de la instrucción recién terminada. Durante la ejecución temporizada o escalonada, esta NO es la instrucción resaltada. Durante el retroceso, esta es la instrucción resaltada. La instrucción resaltada es la siguiente que se ejecutará en la secuencia de ejecución normal (hacia adelante). En conjunción con el resaltado de la celda, hemos añadido la posibilidad de personalizar el esquema de color y la fuente. Seleccione Resaltar en el menú Ajustes. En el cuadro de diálogo resultante, puede seleccionar resaltar color de fondo, color de texto y fuente para las diferentes tablas de tiempo de ejecución (segmento de texto, segmento de datos, registros). También puede seleccionarlos para la visualización normal, no sólo resaltada, mediante filas pares e impares, pero no por tabla. Función Cool new Labels Window: la tabla puede clasificarse en orden ascendente o descendente según la etiqueta (alfanumérica) o la columna Address (numeric). Simplemente haga clic en el encabezado de la columna para seleccionar y alternar entre ascendente (triángulo vertical) o descendente (triángulo invertido). Las direcciones se ordenan basándose en valores de bit no firmados de 32 bits. El ajuste persiste en todas las sesiones. El panel Mensajes, que incluye las fichas Marte Mensajes y Ejecutar I / O, se muestra ahora con una fuente monoespaciada (anchura de caracteres fijos). Esto facilita gráficos basados ​​en texto cuando se ejecuta desde el IDE. El archivo de distribución Mars. jar ahora contiene todos los archivos necesarios para producir un nuevo archivo jar. Esto facilitará la expansión de la jarra, la modificación de los archivos fuente, la recompilación y la producción de una jarra nueva para uso local. CreatMarsJar. bat contiene la instrucción jar. La ventana de Ayuda ahora incluye una pestaña para Agradecimientos. Esto reconoce a los contribuyentes y corresponsales de MARS. Hemos añadido una nueva llamada de sistema (syscall) para generar tonos MIDI de forma sincronizada, syscall 33. La llamada MIDI original regresa inmediatamente cuando se genera el tono. El nuevo no volverá hasta que la salida de tono esté completa independientemente de su duración. La pantalla del Segmento de datos ahora desplaza 8 filas (media tabla) en lugar de 16 cuando se hace clic en los botones de flecha. Esto hace que sea más fácil ver una secuencia de celdas relacionadas que pasan cruzando un límite de tabla. Tenga en cuenta que puede mantener pulsado cualquiera de los dos botones para desplazarse rápidamente. El cuadro combinado con varios límites de direcciones de datos también funciona mejor ahora. Bug Fix: Dos correcciones a la herramienta Keyboard and Display Simulator. El bit listo para el transmisor no se restableció basándose en el recuento de instrucciones cuando se ejecuta en el segmento de texto del kernel y el bit de nivel de excepción de los registros de estado no se probó antes de habilitar la rutina de servicio de interrupción (podría llevar a bucle si se producen interrupciones con la rutina de servicio de interrupción ). Gracias a Michael Clancy y Carl Hauser por traer a mi atención y sugerir soluciones. Corrección de errores: Las direcciones de byte de segmento de pila no en los límites de palabras no se estaban procesando correctamente. Esto se aplica al orden de bytes little-endian (big-endian no está habilitado o probado en MARS). Gracias a Saul Spatz por reconocer el problema y proporcionar un parche. Correcciones de errores menores incluyen: Corregir una falla que conduce al fallo al iniciar MARS en el modo de comando, aclarando el mensaje de error del ensamblador para errores de operandos muy pocos o demasiados y corregir la descripción de las instrucciones lhu e lbu de unaligned a unsigned. Las nuevas mejoras y correcciones de errores incluyen: Una nueva herramienta, el teclado y la pantalla MMIO Simulator, que soporta las operaciones de entrada y salida de interrogado y de interrupción a través de la memoria de asignación de E / O (MMIO). El programa MIPS escribe en ubicaciones de memoria que sirven como registros para dispositivos simulados. Soporta entrada de teclado y una pantalla simulada orientada a caracteres. Haga clic en el botón de ayuda de la herramienta para obtener más detalles. Una nueva Herramienta, el Contador de Instrucción, aportado por el usuario de MARS Felipe Lessa. Contará el número de instrucciones MIPS ejecutadas junto con porcentajes para las instrucciones de formato R, formato I y formato J. Gracias, Felipe Los argumentos del programa pueden ahora ser proporcionados al programa MIPS en tiempo de ejecución, a través de un ajuste IDE o un modo de comando. Consulte la opción del modo de comando quotpaquot para obtener más detalles sobre la operación del modo de comando. El argumento count (argc) se coloca en a0 y la dirección de una matriz de cadenas terminadas en null que contiene los argumentos (argv) se coloca en a1. También están disponibles en la pila de ejecución (sp). Dos cambios relacionados permiten que MARS ensamble el código fuente producido por ciertos compiladores tales como gcc. Un cambio es emitir advertencias en lugar de errores para directivas no reconocidas. MARS implementa un número limitado de directivas. Ignore estas advertencias bajo su riesgo, pero el ensamblado puede continuar. El segundo cambio es permitir que las etiquetas de la sentencia contengan, y comience específicamente con, 3939. En modo de comando, los valores de registro finales se muestran dando el nombre de registro como una opción. Los nombres de registro comienzan con 3939, que es interceptado por ciertas shells de comandos de SO. La convención para escapar no es uniforme a través de conchas. Hemos mejorado las opciones para que ahora pueda dar el nombre del registro sin el 3939. Por ejemplo, puede utilizar t0 en lugar de t0 como opción. No puede referirse a registros por número de esta manera, ya que una opción de número entero es interpretada por el analizador de comandos como un límite de ejecución de instrucción. Gracias a Lucien Chaubert por reportar este problema. Mejoras menores: La función de volcado del modo de comando se ha extendido para permitir rangos de direcciones de memoria, así como nombres de segmentos. Si introduce una nueva extensión de archivo en el cuadro de diálogo Abrir, la extensión permanecerá disponible en toda la sesión interactiva. El operador de repetición de valor de segmento de datos 39:39 ahora funciona para todas las directivas numéricas (.palabra, medio, byte, flotante, doble). Esto le permite inicializar múltiples ubicaciones de memoria consecutivas con el mismo valor. Por ejemplo: unos. Medio 1. 8 Almacene el valor 1 en 8 semestres consecutivos Cambio mayor: las constantes hexadecimales que contienen menos de 8 dígitos se interpretarán como si los dígitos iniciales fueran 039s. Por ejemplo, 0xFFFF se interpretará como 0x0000FFFF, no 0xFFFFFFFF como antes. Esto estaba causando problemas con operandos inmediatos en el intervalo 32768 a 65535, que fueron malinterpretados por las operaciones lógicas como firmado 32 bits valores en lugar de unsigned 16 bits valores. Los valores de 16 bits firmados y no firmados ahora se distinguen por el tokenizer basado en los símbolos prototipo -100 para firmar y 100 para unsigned (principalmente operaciones lógicas). Muchas gracias a Eric Shade de la Universidad Estatal de Missouri y Greg Gibeling de UC Berkeley por sus esfuerzos extendidos en ayudarme a abordar esta situación. Correcciones de errores menores: round. w.s y round. w.d se han modificado para realizar correctamente los redondeos IEEE de forma predeterminada. Gracias a Eric Shade por señalarlo. Syscall 12 (carácter de lectura) se ha cambiado para dejar el carácter en v0 en lugar de a0. El original se basó en una errata en el Apéndice A de Organización y Diseño de Computadoras. MARS no se ejecutará desde el archivo ejecutable Mars. jar si se almacenó en una ruta de directorio aquellos nombres de directorio contienen caracteres no ASCII. Esto ha sido corregido. Gracias a Felipe Lessa por señalar esto y ofrecer una solución. MARS ahora detectará correctamente la condición EOF al leer de un archivo usando syscall 14. Gracias a David Reimann por traer esto a nuestra atención. Lo nuevo en MARS Versión 3.4.1 Marte 3.4.1 fue lanzado el 23 de enero de 2008. Se trata de una solución de corrección de errores para hacer frente a dos errores. Un error aparece en pseudoinstrucciones en las que la expansión incluye instrucciones de ramificación. Los desplazamientos de sucursales fijos ya no eran correctos debido a cambios en el cálculo de las compensaciones de sucursales en la Versión 3.4. Al mismo tiempo, abordamos la cuestión de expandir tales pseudo-instrucciones cuando la ramificación diferida está habilitada. Dichas expansiones incluirán ahora una instrucción nop siguiendo a la rama. También se abordó un error por error que ocurrió al generar la instrucción lui en la expansión de las pseudoinstrucciones de rama condicional cuyo segundo operando es un 32 bit inmediato. Las expansiones de una serie de pseudo-instrucciones se modificaron para eliminar ramas internas. Estas y otras expansiones también se optimizaron para la carga extendida por signos de operandos inmediatos de 16 bits reemplazando la secuencia lui / ori o lui / sra con addi. Las pseudo-instrucciones afectadas por una o ambas de estas modificaciones incluyen: abs, bleu, bgtu, beq, bne, seq, sge, sgeu, sle, sleu, sne, li, sub y subi. Estas modificaciones fueron sugeridas por Eric Shade de la Universidad Estatal de Missouri. Lo que hay de nuevo en MARS Versión 3.4 Una nueva syscall (32) para soportar pausas de longitud especificada en milisegundos (dormir) durante la ejecución simulada. Cinco nuevas syscalls (40-44) para apoyar el uso de generadores de números pseudo-aleatorios. Un número ilimitado de estos generadores están disponibles, cada uno identificado por un valor entero, y para cada uno tiene la capacidad de: establecer el valor de la semilla, generar un valor entero de 32 bits del intervalo int Java, generar un valor entero de 32 bits entre 0 (Inclusive) y un límite superior especificado (exclusivo), generan un valor flotante de 32 bits entre 0 (inclusive) y 1 (exclusivo) y generan un valor doble de 64 bits entre 0 (inclusive) y 1 (exclusivo). Todos se basan en la clase java. util. Random. Diez nuevas syscalls (50-59) para admitir ventanas de diálogo de mensajes y ventanas de diálogo de entrada de datos. Estos últimos se distinguen de los syscalls de entrada de datos estándar en que un mensaje de solicitud se especifica como un argumento syscall y se muestra en el cuadro de diálogo de entrada. Todos se basan en la clase javax. swing. JOptionPane. La capacidad de volcar los contenidos de. text o. data memory para archivar en varios formatos. El volcado se puede realizar antes o después de la ejecución del programa desde el IDE (menú Archivo y barra de herramientas) o desde el modo de comando. También se puede realizar durante una pausa de ejecución desde el IDE. Busque el elemento de menú Memoria de volcado en el menú Archivo o la opción de volcado en modo de comando. Un volcado de texto incluirá sólo ubicaciones que contengan una instrucción. Un volcado de datos incluirá un múltiplo de páginas de 4 KB comenzando en la dirección base del segmento y terminando con la última página de 4 KB a la que el programa hará referencia. Los formatos de volcado actuales incluyen binario puro (método java. io. PrintStream. write ()), texto hexadecimal con una palabra (32 bits) por línea y texto binario con una palabra por línea. Se ha desarrollado una interfaz, una clase abstracta y un cargador de formatos para facilitar el desarrollo y el despliegue de formatos de volcado adicionales. Esta capacidad fue prototipo por Greg Gibeling de UC Berkeley. Cambió el cálculo de los desplazamientos de sucursales cuando el ajuste de ramificación retardada está deshabilitado. Las direcciones de destino de instrucción de rama están representadas por el número relativo de palabras a derivar. Con la versión 3.4, este valor refleja la ramificación retardada, independientemente de si la opción Ramas retardadas está habilitada o no. El código binario generado para las sucursales coincidirá ahora con el de los ejemplos del libro de texto Computer Organization and Design. Este es un cambio del pasado, y se hizo después de extensas discusiones con varios adoptantes MARS. Anteriormente, el desplazamiento de la rama era 1 inferior si se activaba el ajuste de ramificación retardada: la etiqueta de la instrucción: beq 0,0, la etiqueta generaría 0x1000FFFF si la ramificación diferida estaba habilitada y 0x10000000 si estaba deshabilitada. Ahora generará 0x1000FFFF en ambos casos. El simulador se ramificará siempre a la ubicación correcta MARS no permite el ensamblaje bajo un ajuste y la simulación en el otro. Solución de errores: El archivo JAR ejecutable mars. jar ahora se puede ejecutar desde un directorio de trabajo diferente. Fix fue sugerido por Zachary Kurmas de la Grand Valley State University. Solución de errores: Se ha corregido el problema de MARS colgando mientras monta una pseudo-instrucción con un operando de etiqueta que contiene el laboratorio de subcadena. Corrección de errores: No se ejecutará ningún código relacionado con Swing cuando MARS se ejecute en modo de comando. Esto corrige un problema que se produjo cuando MARS se ejecutó en un sistema sin cabeza (sin monitor). Swing es la biblioteca Java para apoyar la programación de Interfaces Gráficas de Usuario. El arreglo fue proporcionado por Greg Gibeling de UC Berkeley. El carácter 0 ahora se reconoce cuando aparece en literales de cadena. Lo que hay de nuevo en la versión 3.3 de MARS Apoyo a la ramificación retardada de MIPS. Todos los equipos MIPS implementar esto, pero puede ser confuso para los programadores, por lo que se deshabilita de forma predeterminada. Bajo ramificación retardada, la instrucción siguiente después de una rama o instrucción de salto siempre se ejecutará, incluso si la rama o el salto se toma Muchos programadores y ensambladores se ocupan de esto mediante la inserción de una instrucción quotnopquot después de cada rama o salto. El ensamblador MARS no inserta un quotnopquot. Ciertas pseudo-instrucciones se expanden a una secuencia que incluye una rama, tales instrucciones no funcionarán correctamente en ramificaciones retardadas. La ramificación diferida está disponible en modo de comando con la opción quotdbquot. Una nueva herramienta de interés principalmente para los instructores. La herramienta de ampliación de pantalla, cuando se selecciona en el menú Herramientas, se puede utilizar para producir una imagen estática ampliada de los píxeles que se encuentran debajo de ella. La imagen se puede anotar arrastrando el ratón sobre ella para producir una línea de garabatos. Se amplía hasta 4 veces el tamaño original. Ahora tiene la capacidad de establecer y modificar la familia de fuentes, estilo y tamaño del editor de texto. Seleccione quotEditor. Quot en el menú Configuración para obtener el diálogo. Haga clic en el botón Aplicar para ver los nuevos ajustes mientras el diálogo todavía está abierto. Los ajustes de fuente se conservan de una sesión a la siguiente. La lista de la familia de fuentes comienza con 6 fuentes comúnmente utilizadas en todas las plataformas (seleccionadas de las listas encontradas en codestyle. org), seguidas por una lista completa. Dos de los seis son monospaced fuentes, dos son proporcional serif, y dos son proporcionales sans serif. Se ha mejorado la ventana Etiquetas en el panel Ejecutar, que muestra la información de la tabla de símbolos. Al hacer clic en un nombre de etiqueta o su dirección, el contenido de esa dirección se centrará y se resaltará en la ventana Segmento de texto o Ventana de segmento de datos según corresponda. Esto facilita establecer puntos de interrupción basados ​​en etiquetas de texto o encontrar el valor almacenado en la dirección de una etiqueta. Si vuelve a ordenar las columnas de la ventana Segmento de texto arrastrando un encabezado de columna, el nuevo orden será recordado y aplicado desde ese momento, incluso de una sesión MARS a la siguiente. La ventana de segmento de texto es donde se muestran el código fuente, el código básico, el código binario, las direcciones de código y los puntos de interrupción. Si un programa MIPS finaliza quotrunning off the bottomquot del programa, MARS termina, como antes, sin una excepción, pero ahora mostrará un mensaje de terminación más descriptivo en la ventana Mensajes. Anteriormente, el mensaje de terminación era el mismo que el generado después de ejecutar un syscall de salida. Una nueva llamada de sistema (syscall) para obtener la hora del sistema ya está disponible. Es el servicio 30 y no está disponible en SPIM. Su valor se obtiene del método java. util. Date. getTime (). Consulte la pestaña Syscall de MIPS para obtener más información. Una nueva llamada de sistema (syscall) para producir sonido MIDI simulado a través de su tarjeta de sonido ya está disponible. Es el servicio 31 y no está disponible en SPIM. Su implementación se basa en el paquete javax. sound. midi. Se ha probado sólo bajo Windows. Consulte la pestaña Syscall de MIPS para obtener más información. Lo que hay de nuevo en la versión 3.0 de MARS En resumen, la versión 3.0 de muchos corrige un error de la versión 2.2 (febrero de 2006) y agrega una serie de instrucciones y características. Corrección de errores Las instrucciones básicas de SLTI y SLTIU se codificaron incorrectamente como formato R (registro) en lugar de instrucciones de formato I (inmediato). Esto ahora se corrige. Instrucciones MIPS adicionales Se agregaron más de 40 nuevas instrucciones básicas al conjunto de instrucciones MIPS-32 que MARS ahora ensambla y simula. El total es ahora 141 instrucciones básicas. Ahora es compatible con casi todas las instrucciones de Patterson y Hennessys Computer Organization y el libro de texto de diseño. Las excepciones son las instrucciones relacionadas con la trampa y la trampa, y las instrucciones de ramificación que suponen una ramificación retardada (probable). También se agregó un gran número de pseudoinstrucciones. Todas las pseudoinstrucciones del Apéndice A del texto de Patterson y Hennessys son ahora reconocidas y ampliadas. Algunos otros se añadieron por conveniencia (ADDI con 32 bits constante) o diversión (SUBI). Sin embargo, la mayoría de las adiciones de pseudo-instrucción implementan modos de direccionamiento de memoria alternativos para las diversas instrucciones de carga y almacenamiento. Las instrucciones Native MIPS de carga y almacenamiento soportan sólo un modo de direccionamiento: dirección base del formulario 100 (1). Donde 100 es una constante de 16 bits y 1 es un registro cuyo contenido se añade a la constante para formar la dirección efectiva. MARS ahora reconoce y amplía los siguientes modos de direccionamiento para todas las operaciones de carga y almacenamiento: contenido del registro más 0 contenido del registro de desplazamiento más suma de la constante de 32 bits y dirección etiquetada Un comentario sobre las constantes de 32 bits. Una pseudo-instrucción puede expandirse de forma diferente dependiendo del valor de la constante. Si no se puede contener en 16 bits, entonces sus 16 bits de orden superior se cargan en el registro (LUI) antes del procesamiento. Hemos decidido determinar consistentemente el límite de 16 bits basado en valores firmados: -32768 a 32767. Otros simuladores pueden interpretar los valores de forma diferente (por ejemplo sin firmar) dependiendo del contexto en el que se utilizan. Nuevas características de IDE Capacidad para retroceder a través de la ejecución simulada del programa MIPS, deshaciendo los resultados de un paso de ejecución a la vez. Su icono de la barra de herramientas es una flecha hacia la izquierda con un 1, para reservar los iconos de los pasos con la flecha hacia la derecha con 1. Deshacer tantos como los más recientes 1000 pasos de ejecución. Puesto que cada backstep requiere un tecleo o una pulsación de tecla, esto debe ser abundante para los propósitos de la depuración. También está disponible en el momento de la terminación del programa normal o anormal. Un límite: esta característica sólo deshacer escrituras a la memoria, registros o banderas de condición de punto flotante. Las operaciones SYSCALL a recursos externos (consola de E / S, archivos) no se deshacen por esta función. La función de ayuda se ha ampliado y refinado algo. La pestaña MIPS ahora contiene cuatro pestañas propias: una lista de instrucciones básicas con descripciones, una lista de pseudoinstrucciones y formatos de instrucciones con descripciones, una lista de directivas de ensamblador y una documentación para todas las funciones SYSCALL disponibles y su uso. Y solo por diversión, he añadido una pestaña que contiene las letras de Walter Changs a The MIPS Instruction Set que puede ser cantada a una melodía de Gilbert y Sullivan. En la pantalla de segmento de texto, la fuente y las instrucciones básicas correspondientes se muestran ahora en columnas adyacentes en lugar de concatenarse en la misma columna. Ambos aún se destacan cuando se realiza una ejecución escalonada o temporizada. Se ha agregado un menú de configuración para controlar varias opciones verdaderas / falsas. Las opciones actuales y sus valores predeterminados son: Visualizar la ventana de etiquetas (tabla de símbolos) en la ficha Ejecutar. El valor predeterminado es false. Si se selecciona, la ventana de etiquetas se mostrará a la derecha del segmento de texto. Permitir programas para utilizar ampliado (pseudo) instrucciones y formatos. El valor predeterminado es true. Esto incluye todos los modos de direccionamiento de memoria que no sean el modo nativo MIPS (desplazamiento constante de 16 bits añadido al contenido del registro). Reúna un archivo automáticamente tan pronto como se abra, e inicialice el diálogo Abrir archivo con el archivo abierto más recientemente. El valor predeterminado es falso. Esto es conveniente si utiliza un editor externo para componer sus programas. Mostrar direcciones de memoria en hexadecimal. El valor predeterminado es true. Si no se seleccionan, las direcciones se mostrarán en decimal. Esta configuración también se puede alternar en una casilla de verificación en el borde de la ventana de segmento de datos. Mostrar memoria y registrar el contenido en hexadecimal. El valor predeterminado es true. Si no se seleccionan, los vlaues se mostrarán en decimal. Esta configuración también se puede alternar en una casilla de verificación en el borde de la ventana de segmento de datos. Se ha agregado un elemento de menú Borrar todos los puntos de interrupción al menú Ejecutar. Se habilita siempre que se hayan establecido uno o más puntos de interrupción de ejecución. Mucho más conveniente que tener que limpiarlos individualmente. Se pueden borrar antes, durante o después de la ejecución. Tenga en cuenta que todos los puntos de interrupción se borran automáticamente cada vez que se ensambla un archivo. Nueva barra de herramientas y íconos de elementos de menú. Nuevas características de la línea de comandos Un nuevo conmutador de comandos, np, especifica que un programa MIPS no está autorizado a utilizar pseudoinstrucciones y / o formatos. MIPS Soluciones de software incorporadas Procesadores compatibles Imagination Technologies MIPS - i6400 - M51xx - interAptiv - microAptiv - MIPS32 1004K familia - MIPS32 74K family - MIPS32 24K family - MIPS32 M14K family - MIPS32 M4K/4K family Microchip - PIC32MZ family - PIC32MX family Cavium Networks - CN38xx - CN58xx IDT - RC30xx - RC323xx - RC4700 - RC46xx - RC500 LSI Logic - CW40xx NEC - VR41xx - VR43xx - VR50xx - VR54xx - VR5500 Toshiba - TX19xx - TX49 - TX390x Software development tools MULTI development environments Quickly develop, debug, test, and optimize embedded and real-time applications TimeMachine debugging suite Go back in time to find the most difficult bugsmdashin minutes DoubleCheck integrated static analyzer Easily pinpoint bugs early in development Green Hills optimizing compilers Generating the smallest and fastest code from C, C Processor probes MIPS optimizing compilers Green Hills Software has been providing Optimizing C, C, and Embedded C compilers to the embedded industry since 1982. Green Hills optimizing compilers offer hundreds of unique optimizations, each developed as a result of studying how to extract the highest performance from thousands of embedded programs. The MIPS compiler uses a common code generator with architecture-specific optimizations. Modules for each specific MIPS model exploit pipeline and instruction set characteristics to generate highly optimized binary code. Processor Options mdash Specific to each MIPS architecture and processor supported for optimal performance. This setting determines the instructions permitted as well as the pipeline optimization strategy used. Position Independent Code (PIC) and Data (PID)mdash Allows code and data to be placed anywhere in memory and still run correctly. microMIPSmdash Generate code for both MIPS32 and microMIPS modes of execution MIPS Architecture Modules mdash Generate code for the DSP, Virtualization, and multi-threading (MT) modules from both C/C and assembly. MIPS16e Instruction Set mdash Generate code for the MIPS16e ASE Linker Optimizations mdash The Green Hills Linker optionally performs additional optimizations for speed and size. Platform solutions Aerospace amp avionics INTEGRITY-178B RTOS, the ARINC 653 partition scheduler, and documentation required for FAA DO-178B Level A certification Automotive electronics Debuggers, compilers (with built-in MISRA C checker), simulator, and profiling tools for powertrain, body, chassis, and infotainment subsystems Industrial safety RTOS amp integrated middleware for industrial systems requiring IEC/EN 61508 safety certification Medical devices RTOS amp integrated middleware including networking, file systems, USB, embedded databases, graphics and video Secure networking Solutions to secure network devices at their core using integrated layer 3 routing, layer 2 switching, amp IPv4/v6 networking protocols Software defined radio POSIX-conformant RTOS integrated with TCP/IP stack, CORBA, SCA core framework, waveform development solutions, and reference hardware

No comments:

Post a Comment