2012-05-30 17 views
6

Algunas bibliotecas de sistema como malloc strlen quieren o devuelven size_t como parámetro.Existe un equivalente a size_t en llvm

  • ¿Cuál es la opción correcta en LLVM IR para interactuar con estas funciones?
  • ¿La selección es la tarea del compilador?
  • ¿LLVM IR tiene un tipo de tamaño_t?

Respuesta

9

En el nivel LLVM, size_t no existe. Es una construcción en beneficio del desarrollador que está tipificado a un tipo nativo. Los tipos nativos tienen un tamaño fijo para la arquitectura de destino y así es como el compilador los representa en el código de bit LLVM. Por lo tanto, en x86, size_t podría verse en el extremo frontal como unsigned long, y luego se escribirá en LLVM como i32 (ya que el ensamblaje LLVM no tiene un tipo sin signo).

+0

entonces, ¿la tarea del compilador es conocer la arquitectura para la que se está compilando? – waynix

+0

@waynix, sí, seguramente. Si necesita interactuar con C/C++, debe conocer el objetivo para el que está compilando: estos idiomas no son neutrales al objetivo. –

-2

Puede usar size_t en llvm, es un tipo válido para usar normalmente.

+0

El ensamblador llvm en sí mismo no conoce size_t. – waynix

+0

Quizás te estés refiriendo a Clang (el compilador de C). @waynix tiene razón en que no hay tal tipo en LLVM. – mgiuca

Cuestiones relacionadas