Articles of abi

¿C tiene un ABI estándar?

De una discusión en otro lugar : C ++ no tiene ABI estándar Pero tampoco C, ¿verdad? En cualquier plataforma dada, prácticamente lo hace. No sería útil como lingua franca para la comunicación entre idiomas si faltara. ¿Cuál es su opinión sobre esto?

¿Por qué System V / AMD64 ABI exige una alineación de astackmiento de 16 bytes?

He leído en diferentes lugares que se hace por “razones de rendimiento”, pero todavía me pregunto cuáles son los casos particulares en los que el rendimiento mejora con esta alineación de 16 bytes. O, en cualquier caso, ¿cuáles fueron las razones por las cuales se eligió esto? editar : estoy pensando que escribí la pregunta […]

¿Por qué esta función empuja RAX a la stack como la primera operación?

En el ensamblaje de la fuente de C ++ a continuación. ¿Por qué RAX se envía a la stack? RAX, tal como lo entiendo de ABI, podría contener algo de la función de llamada. Pero lo guardamos aquí, y luego movemos la stack de vuelta por 8 bytes. Entonces, ¿el RAX en la stack es, […]

¿Hay algún inconveniente para pasar las estructuras por valor en C, en lugar de pasar un puntero?

¿Hay algún inconveniente para pasar las estructuras por valor en C, en lugar de pasar un puntero? Si la estructura es grande, obviamente existe el aspecto ejecutado de copiar muchos datos, pero para una estructura más pequeña, básicamente debería ser lo mismo que pasar varios valores a una función. Es quizás incluso más interesante cuando […]

¿Cuál es el formato de la estructura va_list x86_64?

¿Alguien tiene una referencia para la representación de va_list en el x86_64 ABI (el usado en Linux)? Estoy intentando depurar algún código donde la stack o los argumentos parecen corruptos y realmente ayudaría a entender lo que se supone que debo ver …

Cuál es la diferencia de sección y segmento en formato de archivo ELF

Del formato ejecutable y enlazable de wiki: Los segmentos contienen información que es necesaria para la ejecución del archivo en tiempo de ejecución, mientras que las secciones contienen datos importantes para vincular y reubicar. Cualquier byte en el archivo completo puede pertenecer como máximo a una sección, y puede haber bytes huérfanos que no pertenecen […]

¿Se requiere un signo o extensión cero al agregar un desplazamiento de 32 bits a un puntero para el ABI x86-64?

Resumen: estaba buscando código ensamblador para guiar mis optimizaciones y ver muchas extensiones de signo o cero al agregar int32 a un puntero. void Test(int *out, int offset) { out[offset] = 1; } ————————————- movslq %esi, %rsi movl $1, (%rdi,%rsi,4) ret Al principio, pensé que mi comstackdor tenía problemas para agregar enteros de 32 bits […]

¿Dónde se documenta el sistema ABI del sistema V x86-64?

El x86-64 System V ABI (usado en todo excepto en Windows) solía vivir en http://x86-64.org/documentation/abi.pdf , pero ese sitio ya no está en Internet. ¿Hay un nuevo hogar autorizado para el documento?

¿Qué es una interfaz binaria de aplicación (ABI)?

Nunca entendí claramente qué es un ABI. Por favor, no me señale un artículo de Wikipedia. Si pudiera entenderlo, no estaría aquí publicando una publicación tan larga. Esta es mi forma de pensar acerca de las diferentes interfaces: Un control remoto de TV es una interfaz entre el usuario y el televisor. Es una entidad […]

¿Cómo paso con seguridad objetos, especialmente objetos STL, hacia y desde una DLL?

¿Cómo paso objetos de clase, especialmente objetos STL, hacia y desde una DLL de C ++? Mi aplicación tiene que interactuar con complementos de terceros en forma de archivos DLL y no puedo controlar con qué comstackdor se crean estos complementos. Soy consciente de que no hay un ABI garantizado para objetos STL, y me […]