Vector35 / Vector35/binaryninja-api
Generic Intrinsic support
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- C++
- Estrellas
- 1.3k
- Forks
- 298
- Merge medio
- 5 d 5 h
- PR fusionados (30 d)
- 19
Descripción
We've identified a need for a "generic intrinsics" These intrinsics would be identified through either lifting or pattern matching. Here are few examples are:
- min/max
- floor/ceiling/round
- align/extract_bits/clear_bits
- memcpy
The idea is that we would reserve space in the intrinsic identifier field (maybe by setting the top bit) and these would be for internal use only.
enum BNGenericIntrinsic : uint32_t {
MIN_INTRINSIC = 0x80000000,
MAX_INTRINSIC,
FLOOR_INTRINSIC,
...
};
We would likely want to convert the existing builtin_* synthetic builtins to this new, more extensible, system. This system would need to additionally support cross references. Our current cross reference system is based on a uint64_t which is insufficient for representing a cross reference to something that really doesn't exist within the address space. There are a couple of solutions to this:
- Expand the representation of what our definition of 'memory' is to support these types of situations
- Use a mechanism like relocations use which is essentially a symbolic cross reference. So rather than address-based cross references we'd have ones based on a symbol (+ addend)
- The final not-good option would be to continue to use the synthetic_builtins section which has some unfortunate consequences in some cases.
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Start by reviewing the existing builtin_* synthetic builtins and the current uint64_t cross-reference system. Compare the proposed identifier scheme with the three cross-reference options; done requires a decided design for generic intrinsics, including the listed examples, cross references, and migration of existing synthetic builtins.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- cpp
- Área
- reverse-engineering
- Tipo de issue
- Nueva funcionalidad
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Estado de actividad
- Estancado
- Claridad
- Necesita aclaración
- Aptitud para principiantes
- 25/100