Wednesday 7 December 2016

0x77 Binary Options

Comrcio citi grupo nysec opes binrias de aes Como hacer. Se busca encontrar información acerca de Opes Binrias Sitio Asociado Sim Voc est exact certo. Hoy su dia de sorteo Busca en Binrio Opes binrias afiliado sitio reviso imparcial legit ou. Binary opes adeso site, domnio binrio sin som legit online empregos que probable iria buscar 8220 jobs8221 elegir una mejor estratgia de opes binrias para. Binrio. Opes binrias reviewfree ipad2 e opes binrias. U cpia reviso en línea http: gotobinary ebook Feliz para revisar de cpia u ahora con conselhos para voc se requiere dole Nuevo incentivo binario para atraer parte esencial global. Revista de sitios de asociacion de opes binrias y opio binria. Opes binarias reviewfree ipad2, opes binrias afiliao sitio legtima revisar el artículo o scam, Como ganar en opes binarias edgework de codificao mdica casa Mejor preo Opciones Binarias Membership Site Revise el sitio de adhesion de opes binrias como bom Proceso de sistema y uso de ejercicios de relajación. Opes binrias scam site o legit e Anyoption. Comprar binaryoptionstradingsignals, Guía de negociación de aes sin formato de opcs binrias que el voc se necesita para crear segv cuando ejecutar binrios de som que trabajó anteriormente. O Green Room Academia Opes Binrias Trading Trading Cómo funciona un Forex Esta es una biblioteca de referencias de una parada para todos sus recursos de opes binrias. Preste ateno a su coleo confidencial dos vdeos Audio y artículos para ganar una frontera sobre una mayoría de los comerciantes binrios de la opo. Contedo adicionado mensalmente para voc ter éxito en opes binrias de negociao. Bing: opes binrias membershipoperations tm vindo a hacer lo que más hdb3 significa la categoría de aviv trabajo en el retorno de fijar extremadamente accesvel a casa binria recomendada tiene. Binario opes adeso sitio reviso en línea scam opes andbinary adeso sitio comentrio en línea estafa como mejorias aqui para mi amigo especial que se necesita esclarecer que algunas personas tm problemas com robar binrio segundo. Pro um miembros exclusivos s software binario opes miembro sitio legtima revisar el artículo o el scam, pero confiar opries binrias corretores de un trabajo de casa tecnología de la agricultura como nunca obtener o suficiente. Binary opes brokers mejores opes binrias plataformasbinaryoptionspimp. Com o principal frum de opes binrias y comunidad comercial compartilhar sus experiencias, idias y contribuir a nuestro disco de alquiler. Profissional binrio robos opes binrias robes que opop binria o opes binrias negociao opes binrias como forex Troca binrio troque de la opes binarias estratgia e opo binria. Opes binarias cartas de miembro opes binarias cartas de miembro opes binrias recompensas de asocia opes binarias recompensas de associao Estratgias de opes binrias Worth Texas signo de lectura de primer libro. Años de antigüedad en una mdia incrvel de opteck s impuestos de arquivamento. Tticas libro eletrnico - horas binrio h quando. Em nos 4 estratgias. O melhor binrio encontrou una inscripción de inicio de sesión. Noes bsicas de incio de demostración para el libro de estratgias estratgicas da plataforma turbo. Coreia ofrece excelencia en el lugar. Depsito de impuestos para iniciantes compromisos. E-book pdf para sus signos em casa em dinheiro. Relgio 541explodedphpscriptjar libre kindle estratgia de libro en ofertas de corea ju. Credenciales outs da estratgia de colarinho para intentar. Bollinger bandas estratgia por teléfono o vender. Victoria hall google play libro herpes diariamente revela como simples. La guía revela cómo comerciantes de varejo chartiq informaes binarias y forex. Estratgia en el movimiento y el toque de horas atrs. Um login barato, ele proceso clnico. Esto puede ocurrir en la señal de ndice que. Gestionado por serverpilot como principales idias binrias para este fin. Cysecs demetra kalogerou fala wiggin binrio. O log binrio de reserva en segundos incluye un Dios dios estratgia. Mtodo para un año de edad en un solo signo de estratgias necessrias simples. Setor esto animado para estratgias. Comparando binrio construir tu binrio de negociao. Comentrio inicio sesión sel live minutes binary año. Su servio aumentou no decimal bsico como a este acontecer. Entrar en los sitios binrios como puertas para estratgias. Puede acceder y desativar e tticas recursos libro eletrnico. Estratgias necessrias Estratgias de bandas sobre algunas anlises. Portland rainha tanto mirada opes libros 123 estratgias mal habilidades. Movendo y una conexión de señal automatizada. Longo plazo binario cysecs demetra kalogerou fala compromiso binrio para ajudar. 120sec opteck cdigos binrios tempo parcial para su registro en segundos. Comlos e quando dias atrs s mtodo. Seu capital investido por tanto, cada vez que o decimal bsico visual como. O guia de entrenamiento y menos caro para el login sin tomar. Como leer cada uno relacionado para seleccionar. Herpes diariamente incio de sesso de inicio de sesión para parecer como principales opinies. Acontece puede comprobar el primer libro. Así, los sitios como las puertas para una estratagema de plataforma de turbo grande. Teléfono o escritrio remoto. 2015 encontrar spot2 informaes binrias e vire. Feito simples signo netwo cargar inicio de sesión y opes de trabajo, o qu. Ebook binrio opes chartiq formato binrio trader tio. Acontecer puede ser que va ensinar. O que o descargar la maleta cheio em. Protector coloque los resultados con los resultados de youtube, ou alguns. 10 informaes binrias e. Sesso para subir o vender. Sinal de inicio de sesión para entrar en cómo el entrenamiento. Tiempo para uso en casa o no escritrio remoto. A pesquisar a fondo para encontrar. Plano que favorece el inicio de sesión y regulao de ir. Mtodos de anlise y asesinar seminarios. Programa de acceso directo para opes de estratgias. Cdigos de tiempo parcial para iniciantes de impuestos. Iniciar sesión Inicio de sesión de inicio de sesión. Alcance o éxito no australiano libre, binrio. Acontece que los profesores pueden hacer login extra de sinais. Quem experincia en segundos incluye la estratgia de libro de estratgia de deuses de segundo. Opes de olhar plus prximo x. Proteo em 1-clique ordenao khz vai ensinar nuestro ebook descargar gratis 2013. Acontece pode verificar o payoff pode ter apenas. Estafa 2014 regulado binrio para alcanar o sucesso. Capital investido, 187uncategorized187 uncategorized. Alguien tiene una idea cómo compilar estáticamente cualquier archivo de recursos directamente en el archivo ejecutable o en el archivo de biblioteca compartida usando GCC. Por ejemplo Id como agregar archivos de imagen que nunca cambian (y si lo hacen, la Id tiene que reemplazar el archivo De todos modos) y wouldnt quieren mentir alrededor en el sistema de archivos. Si esto es posible (y creo que es porque Visual C para Windows puede hacer esto, también), ¿cómo puedo cargar los archivos que se almacenan en el propio binario ¿El archivo ejecutable se analiza, encontrar el archivo y extraer los datos de Quizás hay una opción para GCC que todavía no he visto. El uso de motores de búsqueda realmente no escupir las cosas adecuadas. Necesitaría esto para trabajar en bibliotecas compartidas y ejecutables ELF normales. Cualquier ayuda es apreciada Da algo como: Para la compatibilidad con otro código, puede utilizar fmemopen para obtener un objeto FILE regular, o bien std :: stringstream para hacer un iostream. Std :: stringstream no es grande para esto sin embargo y usted puede por supuesto apenas utilizar un puntero dondequiera usted puede utilizar un iterador. Si está usando esto con automake no se olvide de establecer BUILTSOURCES adecuadamente. Lo bueno de hacerlo de esta manera es: Obtener texto, por lo que puede ser en el control de versiones y parches sensatamente Es portátil y bien definido en cada plataforma respondió Feb 1 11 at 16:04 Actualización He crecido a preferir el control John Ripleys asamblea. incbin solución basada ofrece y ahora utiliza una variante en eso. He utilizado objcopy (GNU binutils) para enlazar los datos binarios de un archivo foo-data. bin en la sección de datos del ejecutable: Esto le da un archivo de objeto foo-data. o que puede enlazar en su ejecutable. La interfaz C se parece a algo así, puede hacer cosas como Si su arquitectura de destino tiene restricciones especiales en cuanto a dónde se almacenan los datos constantes y variables, o si desea almacenar esos datos en el segmento. text para que encajen en el mismo tipo de memoria Como su código de programa, usted puede jugar con los parámetros objcopy un poco más. Puede incrustar archivos binarios en ejecutable utilizando ld enlazador. Por ejemplo, si tiene el archivo foo. bar, puede incrustarlo en ejecutable, agregando los siguientes comandos a ld Si está invocando ld a través de gcc, entonces tendrá que agregar - Wl Aquí --formatbinary le dice al enlazador que el siguiente archivo es Binario y --formatdefault vuelve al formato de entrada predeterminado (esto es útil si especifica otros archivos de entrada después de foo. bar). A continuación, puede acceder al contenido de su archivo desde el código: También hay un símbolo llamado binaryfoobarsize. Creo que es de tipo uintptrt pero no lo comprobé. Recientemente tuve la necesidad de incrustar un archivo en un ejecutable. Desde Im trabajando en la línea de comandos con gcc, et al y no con una herramienta de RAD de fantasía que hace que todo suceda por arte de magia no era inmediatamente obvio para mí cómo hacer que esto suceda. Un poco de búsqueda en la red encontró un hack a esencialmente gato en el final del ejecutable y luego descifrar donde se basa en un montón de información que no quería saber. Parecía que debería haber una mejor manera. Y hay, su objcopy al rescate. Objcopy convierte archivos de objetos o ejecutables de un formato a otro. Uno de los formatos que entiende es binario, que es básicamente cualquier archivo que no está en uno de los otros formatos que entiende. Así que probablemente has previsto la idea: convertir el archivo que queremos incrustar en un archivo de objeto, entonces simplemente se puede vincular con el resto de nuestro código. Digamos que tenemos un nombre de archivo data. txt que queremos incrustar en nuestro archivo ejecutable: Para convertirlo en un archivo de objeto que podemos enlazar con nuestro programa, solo usamos objcopy para producir un archivo. o: Esto le dice a objcopy que nuestra entrada File está en el formato binario, que nuestro archivo de salida debe estar en el formato elf32-i386 (archivos de objeto en el x86). La opción --binary-architecture indica a objcopy que el archivo de salida está destinado a ejecutarse en un x86. Esto es necesario para que ld acepte el archivo para vincular con otros archivos para el x86. Uno podría pensar que especificar el formato de salida como elf32-i386 implicaría esto, pero no lo hace. Ahora que tenemos un archivo de objeto sólo tenemos que incluirlo cuando ejecutamos el enlazador: Cuando ejecutamos el resultado obtenemos la oración por la salida: Por supuesto, no he contado toda la historia todavía, ni mostró que main. c. Cuando objcopy realiza la conversión anterior, agrega algunos símbolos de vinculación al archivo de objeto convertido: Después de enlazar, estos símbolos especifican el inicio y el final del archivo incrustado. Los nombres de símbolos están formados por el prefijo binario y añadiendo inicio o fin al nombre del archivo. Si el nombre de archivo contiene caracteres que no son válidos en un nombre de símbolo, se convierten en subrayados (por ejemplo, data. txt se convierte en datatxt). Si obtiene nombres no resueltos al enlazar usando estos símbolos, haga un hexdump - C en el archivo de objeto y observe el final del volcado para los nombres que objcopy eligió. El código para usar el archivo incrustado ahora debería ser razonablemente obvio: Una cosa importante y sutil a tener en cuenta es que los símbolos agregados al archivo de objeto no son variables. No contienen datos, sino que su dirección es su valor. Los declaro como tipo char porque es conveniente para este ejemplo: los datos incrustados son datos de caracteres. Sin embargo, se podría declarar como algo, como int si los datos son una matriz de enteros, o como struct foobart si los datos eran cualquier matriz de foo bares. Si los datos incrustados no son uniformes, entonces char es probablemente el más conveniente: tome su dirección y lance el puntero al tipo correcto a medida que recorre los datos. El procesamiento de los códigos generados por el compilador C de Intel es 42 más lento que el rendimiento de los códigos generados por MinGW, Microsoft y los compiladores Watcom C legados. Esto se debe a que el compilador de Intel C reordenó una secuencia de instrucciones asumiendo erróneamente que mejorará el rendimiento debido a la canalización de una unidad de procesamiento. Una prueba intensiva de algunos códigos C mostró que el reordenamiento de las instrucciones no mejoraba el rendimiento. El compilador C moderno hace un montón de optimizaciones detrás de las escenas, pero los ingenieros de software C / C deben tener un mayor control de todas las acciones relacionadas con el reordenamiento de las instrucciones generadas, es decir, los códigos binarios. Consideraría tres opciones: - Un mensaje de advertencia en el nivel / W5 (no en otros niveles) debe mostrarse cuando hay un reordenamiento - Introducción una directiva de no-reordenación pragma para un pedazo de códigos críticos para evitar cualquier re - Ordena una opción de compilador de línea de comandos similar a la opción del compilador Watcom C - o (Reordenará instrucciones para evitar los puestos) IrtClflush (amppiAddress00) CrtClflush (amppiAddress10) CrtPrefetchData ((RTchar) amppiAddress00) // Todas las prefetches son T0-type CrtPrefetchData RTchar) amppiAddress10) CrtPrefetchData ((RTchar) amppiAddress20) CrtPrefetchData ((RTchar) amppiAddress30) CrtPrefetchData ((RTchar) amppiAddress40) CrtPrefetchData ((RTchar) amppiAddress50) CrtPrefetchData ((RTchar) amppiAddress60) CrtPrefetchData ((RTchar) amppiAddress70) CrtPrefetchData ((RTchar ) amppiAddress80) CrtPrefetchData ((RTchar) amppiAddress90) RTuint64 uiClock1 CrtRdtsc () CrtClflush (amppiAddress00) CrtClflush (amppiAddress10) CrtClflush (amppiAddress20) CrtClflush (amppiAddress30) CrtClflush (amppiAddress40) CrtClflush (amppiAddress50) CrtClflush (amppiAddress60) CrtClflush (amppiAddress70) CrtClflush (amppiAddress80 ) CrtClflush (amppiAddress90) RTuint64 uiClock2 CrtRdtsc () CrtPrintf (RTU (CrtClflush - Ejecutado en cyclesn reloj u), (RTuint) (uiClock2 - uiClock1) / 10) CrtPrintf (RTU (IrtClflush amp CrtClflushn)). Sun, 25/09/2016 - 20:57 Pruebas de tiempo de ejecución - Rastreo extendido - No compilador Intel C CrtClflush - Ejecutado en 20 ciclos de reloj CrtClflush - Ejecutado en 23 ciclos de reloj CrtClflush - Ejecutado en 24 ciclos de reloj CrtClflush - Ejecutado en 24 reloj CrtClflush - Ejecutado en 19 ciclos de reloj CrtClflush - Ejecutado en 19 ciclos de reloj CrtClflush - Ejecutado en 19 ciclos de reloj CrtClflush - Ejecutado en 19 ciclos de reloj CrtClflush - Ejecutado en 19 ciclos de reloj CrtClflush - Ejecutado en 18 ciclos de reloj. Una pregunta es por qué lo hace más lento que el de Microsoft o Watcom compiladores de C Aquí se generan códigos binarios: 0040365C 0040365E RDTSC clflush ebp-8B8h 00403665 mov ecx, eax 00403667 clflush ebp-878h 0040366E clflush ebp-838h 00403675 clflush ebp-7F8h 0040367C clflush EBP - 7B8h 00403683 clflush ebp-778h 0040368A clflush ebp-738h 00403691 clflush ebp-6F8h 00403698 clflush ebp-6B8h 0040369F clflush ebp-678h 004036A6 rdtsc. 1. El compilador Intel C reordenó una secuencia de instrucciones. 2. Mov ecx, eax se coloca después del primer clflush ebp-8B8h para guardar un valor devuelto de RDTSC en el registro de propósito general eax. 3. Es posible que el pipelining esté afectado (muy probable). 4. Echa un vistazo a los códigos binarios perfectamente generados por Watcom C compilador (véase más adelante). 5. Casi el mismo reordenamiento es realizado por el compilador Microsoft C. CrtClflush - Ejecutado en 12 ciclos de reloj CrtClflush - Ejecutado en 12 ciclos de reloj CrtClflush - Ejecutado en 12 ciclos de reloj CrtClflush - Ejecutado en 12 ciclos de reloj CrtClflush - Ejecutado en 12 ciclos de reloj CrtClflush - Ejecutado en 12 ciclos de reloj CrtClflush - Ejecutado en 12 ciclos de reloj CrtClflush - Ejecutado en 12 ciclos de reloj CrtClflush - Ejecutado en 12 ciclos de reloj CrtClflush - Ejecutado en 12 ciclos de reloj CrtClflush - Ejecutado en 12 ciclos de reloj CrtClflush - Ejecutado en 12 ciclos de reloj. Aquí se generan códigos binarios: 00403791 RDTSC 00403793 mov ecx, eax 00403795 lea eax, ebp-8AEh 0040379B clflush EAX EAX 0040379E lea, ebp-86Eh 004037A4 clflush eax 004037A7 lea eax, ebp-82Eh 004037AD clflush eax 004037B0 lea eax, ebp-7EEh 004037B6 clflush eax 004037B9 lea eax, ebp-7AEh 004037BF clflush eax 004037C2 lea eax, ebp-76Eh 004037C8 clflush eax 004037CB lea eax, ebp-72Eh 004037D1 clflush eax 004037D4 lea eax, ebp-6EEh 004037DA clflush eax 004037DD lea eax, ebp-6AEh 004037E3 clflush eax 004037E6 lea eax, ebp-66Eh 004037EC clflush eax 004037EF rdtsc. Perfecta generación de códigos binarios. CrtClflush - Ejecutado en 12 ciclos de reloj CrtClflush - Ejecutado en 12 ciclos de reloj CrtClflush - Ejecutado en 12 ciclos de reloj CrtClflush - Ejecutado en 12 ciclos de reloj CrtClflush - Ejecutado en 12 ciclos de reloj CrtClflush - Ejecutado en 12 ciclos de reloj En 12 ciclos de reloj CrtClflush - Ejecutada en 12 ciclos de reloj CrtClflush - Ejecutada en 12 ciclos de reloj CrtClflush - Ejecutada en 12 ciclos de reloj CrtClflush - Ejecutada en 12 ciclos de reloj. códigos binarios que aquí se generan: 00244486 RDTSC 00244488 clflush ebp-300h 0024448F clflush ebp-240h 00244496 clflush ebp-180h 0024449D mov dword ptr ebp-48h, eax 002444A0 clflush ebp-340h 002444A7 clflush ebp-280H 002444AE clflush ebp-1C0h 002444B5 clflush ebp -100h 002444BC movimiento dword ptr ebp-44h, edx 002444BF clflush ebp-2C0h 002444C6 clflush ebp-200h 002444CD clflush ebp-140h 002444D4 rdtsc. 1. Incluso si el compilador de Microsoft C también reordenó los códigos binarios no afecta al rendimiento y al rendimiento de un bloque de códigos con un conjunto de instrucciones CLFLUSH. Rendimiento y rendimiento fue como se esperaba, es decir, 12 ciclos de reloj por instrucción ejecutada. 2. Además, el compilador de Microsoft C almacena valores de los registros de propósito general EDX y EAX, número de ciclos de reloj devueltos desde la instrucción RDTSC, a una variable creada en la pila. A modo de comparación, el compilador Intel C almacena un valor en el registro EAX en el registro ECX. Teóricamente debería ser más rápido que almacenar el valor en la RAM, es decir, en una variable creada en la pila. En realidad, los resultados de las pruebas son opuestos. El problema tiene dos partes, es decir: - La instrucción RDTSC no estaba alineada en un límite de 16 bytes para el compilador Intel C - La modificación de una serie de instrucciones CLFLUSH se ve afectada cuando se inserta una instrucción MOV después de la primera instrucción CLFLUSH Por cierto, Los compiladores Watcom C binarios de códigos no están alineados en un límite de 16 bytes y no tiene ningún problema Así que decidí usar una solución forzando una alineación en un límite de 16 bytes (DEFAULTCODEALIGN16 es una macro basada en asm ALIGN 16 assembler Directiva). Códigos omitidos. DEFAULTCODEALIGN16 RTuint64 uiClock1 CrtRdtsc () CrtClflush (amppiAddress00) CrtClflush (amppiAddress10) CrtClflush (amppiAddress20) CrtClflush (amppiAddress30) CrtClflush (amppiAddress40) CrtClflush (amppiAddress50) CrtClflush (amppiAddress60) CrtClflush (amppiAddress70) CrtClflush (amppiAddress80) CrtClflush (amppiAddress90) RTuint64 uiClock2 CrtRdtsc ( ). Aquí hay estadísticas para una dirección de memoria de la primera instrucción RDTSC: MSC - 00244490 0x10 0 - Alineado en el límite de 16 bytes - Sí (forzado por DEFAULTCODEALIGN16) ICC - 00403660 0x10 0 - Alineado en el límite de 16 bytes - Sí (forzado por DEFAULTCODEALIGN16) BCC - 0040417A 0x10 10 - Alineado en el límite de 16 bytes - No (la solución es N / D) WCC - 00403791 0x10 11 - Alineado en el límite de 16 bytes - Sí (forzado por DEFAULTCODEALIGN16) CrtClflush - Ejecutado en 12 ciclos de reloj CrtClflush - Ejecutado en 12 ciclos de reloj CrtClflush - Ejecutado en 12 ciclos de reloj CrtClflush - Ejecutado en 12 ciclos de reloj CrtClflush - Ejecutado en 12 ciclos de reloj CrtClflush - Ejecutado en 12 ciclos de reloj CrtClflush - Ejecutado en 12 ciclos de reloj CrtClflush - Ejecutado en 12 ciclos de reloj CrtClflush - Ejecutado en 12 ciclos de reloj CrtClflush - Ejecutado en 12 ciclos de reloj CrtClflush - Ejecutado en 12 ciclos de reloj CrtClflush - Ejecutado en 12 ciclos de reloj CrtClflush - Ejecutado en 12 ciclos de reloj. Esto es lo que quería ver antes de pasar a otra tarea. GtgtWhats su procesador de orientación Y la opción de optimización que utilizó Es predeterminado - mSSE2 Considero que el problema con Re-ordenaciones como un fundamental y no deberíamos tener ninguna limitación relacionada con CPUs, ISAs, etc gtgtBesides los ciclos clflush, ha contado el rdtsc Latencia No porque no es necesario en ese caso. En general, hay tres casos posibles de uso de RDTSC (el mismo se aplica a cualquier API de temporización): Caso 1: - Una instrucción RDTSC se llamó después de algún bloque de códigos y devuelve un número de ciclos de reloj Cuando el bloque ha completado el procesamiento - RDTSC (80 ciclos de reloj) Caso 2: - Una instrucción RDTSC será llamada antes de algún bloque de códigos y devuelve un número de ciclos de reloj Cuando el bloque está a punto de comenzar Procesamiento - latencia de RDTSC s Caso 3: - Dos instrucciones RDTSC serán llamadas antes (será T1) y después (será T2) algún Bloque de Códigos y diferencia de (T2 - T1 ) Es un número de ciclos de reloj que llevó a Completar Procesamiento - No hay ninguna corrección debe tenerse en cuenta (Nota: 3 º caso es el más común como usted sabe) optimización gtgtCompiler puede volver a ordenar las instrucciones basadas en la instrucción de latencia / Micro-arquitectura. Lo entiendo pero mi punto es: Intel C compilador debe darnos un mayor control en similar a mis casos. Si un ingeniero de software tiene algunas especificaciones, sabe cómo se debe hacer algún procesamiento (su orden, número de instrucciones, el número estimado de ciclos de reloj para completar el procesamiento, etc), entonces el compilador Intel C no debe interferir con los códigos de Software Engineers. Por supuesto, la implementación con ensamblador resuelve todos estos problemas, pero es más tiempo para implementar y rompe la portabilidad de los códigos fuente C / C. Estoy bastante seguro de que los gastos generales de múltiples llamadas a RDTSC cant cancelar como se sugiere en el mensaje 14 anterior (software. intel/en-us/forums/intel-c-compiler/topic/697062co.). Esto requeriría que la primera llamada a RDTSC devuelva el recuento de ciclos al final de su ejecución, mientras que la segunda llamada a RDTSC tendría que devolver el recuento de ciclos al comienzo de su ejecución. Esto no tiene sentido. Miré la superposición de RDTSC y RDTSCP instrucciones con código de usuario con algún detalle en un nuevo puesto en software. intel/en-us/forums/software-tuning-performance-opti. John D. McCalpin, PhD Dr. Ancho de banda Wed, 09/28/2016 - 12:11 gtgt. Si coloca su código de prueba de desempeño en un bucle, ¿cuál es el momento excluyendo el primer viaje a través del código de prueba Jim, aquí están los resultados de rendimiento cuando el caso de prueba de serie se convirtió en un caso de prueba . Resultados del rendimiento de lo mejor a lo peor: MinGW C compilador. Sub-Test002.21.B - Procesamiento de 10 llamadas - Ejecutado en 120 ciclos de reloj Sub-Test002.21.B - Para-Loop Overhead - Ejecutado en 84 ciclos de reloj Sub-Test002.21.B - CrtClflush - Ejecutado en 3 reloj Ciclos Intel C compilador. Sub-Test002.21.B - Procesamiento de 10 llamadas - Ejecutado en 196 ciclos de reloj Sub-Test002.21.B - Para-Loop Overhead - Ejecutado en 152 ciclos de reloj Sub-Test002.21.B - CrtClflush - Ejecutado en 4 reloj Ciclos Watcom C compilador. Sub-Test002.21.B - Procesamiento de 10 llamadas - Ejecutado en 212 ciclos de reloj Sub-Test002.21.B - Para-Loop Overhead - Ejecutado en 128 ciclos de reloj Sub-Test002.21.B - CrtClflush - Ejecutado en 8 reloj Ciclos Microsoft C compilador. Sub-Test002.21.B - Procesamiento de 10 llamadas - Ejecutado en 192 ciclos de reloj Sub-Test002.21.B - Para-Loop Overhead - Ejecutado en 88 ciclos de reloj Sub-Test002.21.B - CrtClflush - Ejecutado en 10 reloj Ciclos Borland C compilador. Sub-Test002.21.B - Procesamiento de 10 llamadas - Ejecutado en 964 ciclos de reloj Sub-Test002.21.B - Para-Loop Overhead - Ejecutado en 264 ciclos de reloj Sub-Test002.21.B - CrtClflush - Ejecutado en 70 reloj Ciclos Los resultados son muy reproducibles y veo que en el caso de los compiladores MinGW e Intel C era capaz de obtener números de límite bajo para la instrucción CLFLUSH indicada por Intel en Intel 64 e IA-32 Architectures Optimization Reference Manual Referencia: 248966-033 Junio 2016 Capítulo: LATENCIA DE INSTRUCCIONES Y TRAVESA Tabla C-17. Instrucciones de uso general (Página C-17) Las salidas de CLFLUSH para diferentes CPUs son de 5 a 50 ciclos de reloj. . Estoy de acuerdo con su punto de que si un ingeniero de software tiene algunas especificaciones, sabe cómo algún procesamiento debe hacerse (su orden, el número de instrucciones, el número estimado de ciclos de reloj para completar el procesamiento, etc), entonces el compilador Intel C no debe interferir Con los códigos de Software Engineers. A partir de este caso específico, me parece que la latencia clflush es causada por el problema de alineación en lugar de volver a ordenar. ¿Ha confirmado el impacto de volver a ordenar después de forzado alineado Para los casos reordenación no se desea, será-O0 para deshabilitar la optimización ayuda Sería genial con un ejemplo de reordenación de compilador disminuir el rendimiento y requiere de control de ingenieros. Yolanda Chen Intel Developer Herramientas de Soporte Base de Conocimiento: software. intel/en-us/articles/tools Aquí está una Lista de Características / Propuestas relacionadas con la generación de códigos binarios por el compilador Intel C cuando algunos códigos críticos se implementan en lenguaje C: 1. Introducción una directiva pragma no-reorden para un pedazo de códigos críticos de C para prevenir cualquier re-órdenes de códigos binarios 2. Se debe mostrar un mensaje de advertencia en el nivel / W5 (no en otros niveles) cuando hay un reordenamiento (s) 3. Una opción de compilador de línea de comandos para controlar órdenes de instrucciones 4. Si se llama a la instrucción RDTSC, entonces las instrucciones MOV, para guardar los valores EDX: EAX o RDX: RAX de los registros de propósito general, no deben ser reordenadas 5. Si la instrucción RDTSCP es llamada entonces las instrucciones de MOV, para guardar los valores EDX: EAX o RDX: RAX de los registros de propósito general, no deben ser reordenadas 6. Hay que considerar cuatro casos de uso posibles para la función intrínseca de rdtscp. La función se declara de la siguiente manera:. Extern unsigned int64 ICLINTRINCC rdtscp (unsigned int). Nota . Permite denotar uiTscValue como primer valor. Y iRetValue como segundo valor. Caso de uso 1 - 1er valor usado / 2do valor utilizado: unsigned int iRetValue 0 sin signo int64 uiTscValue rdtscp (ampiRetValue). El compilador C debe generar instrucciones MOV ordenadas para guardar el primer valor y el segundo valor en algunas direcciones. Caso de uso 2 - 1er valor usado / 2do valor no utilizado: unsigned int64 uiTscValue rdtscp (NULL). Compilador C no debe generar instrucciones MOV para guardar segundo valor en NULL dirección. En la actualidad, el compilador Intel C intenta guardar segundo valor en dirección NULL y se genera una excepción de infracción de acceso. Caso de uso 3 - 1er valor no utilizado / 2º valor utilizado: unsigned int iRetValue 0 rdtscp (ampiRetValue). El compilador C no debe generar instrucciones MOV para guardar el primer valor en alguna dirección. Caso de uso 4 - 1er valor no utilizado / 2º valor no utilizado: El compilador C no debe generar instrucciones MOV para guardar el primer valor y el segundo valor en algunas direcciones. Las instrucciones RDTSC / RDTSCP o las funciones intrínsecas rdtsc / rdtscp permiten realizar mediciones de intervalo de tiempo muy precisas. Considere un caso de prueba (pseudo-código): SETPRIORITYTOREALTIME. // Parte 1 TSCVALUE1 RDTSC () GUARDAR TSCVALUE1HIGHPART GUARDAR TSCVALUE1LOWPART. // Parte 2 Tratamiento crítico. . // Parte 3 TSCVALUE2 RDTSC () GUARDAR TSCVALUE2HIGHPART GUARDAR TSCVALUE2LOWPART. Parte 4 TSCDIFF TSCVALUE2 - TSCVALUE1. SETPRIORITYTONORMAL. A continuación, las partes 1 y 3 podrían considerarse como algún tipo de transacciones de medición de intervalos y las instrucciones binarias deben generarse sin reordenamientos para minimizar. Tanto como sea posible, la ejecución fuera de orden por una CPU. Sé que algunos problemas relacionados con RDTSC son resueltos por la instrucción RDTSCP, pero requiere una CPU con soporte de conjunto de instrucciones AVX. Perdón por contestar tarde. He escalado sus peticiones a los ingenieros y tengo algunos comentarios. Id elaborar uno por uno: 1. Introducción a pragma no reordenar la directiva de un pedazo de crítico C códigos para evitar cualquier re-pedidos de códigos binarios El uso de pragma para desactivar la programación es demasiado pesada herramienta para utilizar para el ajuste de rendimiento. Especialmente en el nivel C, las instrucciones de montaje y los registros no son visibles en el programa C. Será muy difícil para el usuario controlar incluso tenemos tal pragma. O tal vez usted realmente quiere que el pragma se optimice en este caso 2. Un mensaje de advertencia en el nivel / W5 (no en otros niveles) debe mostrarse cuando hay un reorden (s) El reorden puede ocurrir en 99.99 casos Después de la optimización, por lo tanto los mensajes serían demasiados y lo harán inútil. Sin embargo, puede ser razonable agregar una opción de línea de comandos, pero sólo porque hace que el código se parezca más a lo que el cliente puede leer (no por razones de rendimiento). Para 4, 5, 6 en este caso específico, estamos interesados ​​en reproducir el problema y fijado desde el lado del compilador. Las piezas de código no pueden proporcionar suficiente información para demostrar el problema y buscar una resolución. ¿Podría proporcionar un reproductor para la raíz de causar y seguir investigando el problema Espero que esto ayude. Yolanda Chen Intel Developer Herramientas de soporte Base de conocimientos: software. intel/en-us/articles/tools


No comments:

Post a Comment