Newer
Older
# Bibliothèque Rust pour architecture avancée
bibliothèque de fonctions utilitaires pour la programmation RUST en Licence 3 Informatique : architecture avancée
- Compatibilité: Rust 1.90.0+, OS [macOS/Linux/Windows], arch [x86_64/aarch64]
## Installation
Ajoutez ceci dans votre `Cargo.toml` :
archi_avancee = { git = "https://www-apps.univ-lehavre.fr/forge/amantonl/archi_avancee.git" }
=======
ma_biblio_rust = { git = "hhttps://www-apps.univ-lehavre.fr/forge/amantonl/archi_avancee.git" }
\`\`\`
>>>>>>> c7505c6 (maj mod duree et mod simd)
### Fonctionnalités principales
- Mesure de durée d’exécution d’une procédure
- Mesure de durée et récupération du résultat d’une fonction
- Lecture du compteur de cycles CPU (RDTSC/équivalent) selon l’architecture
- Comptage de cycles consommés par un bloc
- Détection des extensions SIMD x86 (SSE/AVX)
### Utilisation rapide
- Mesurer la durée d’un bloc:
```rust
let d = duree_procedure(|| {
    // code à mesurer
});
println!("Durée: {:?}", d);
```
- Mesurer durée + résultat:
```rust
println!("Résultat: {res}, Durée: {d:?}");
```
- Nombre de cycles CPU consommés:
```rust
let cycles = nombre_cycles(|| {
    // code à profiler finement
});
println!("Cycles: {cycles}");
```
- Détection SIMD (x86/x86_64 uniquement):
```rust
test_sse_avx(); // Affiche les features disponibles
```
### Plateformes et garde-fous
- x86/x86_64: support RDTSC et détection SSE/AVX.
- aarch64: lecture du compteur système (cntvct_el0).
- Autres architectures: panique sur la fonction RDTSC; documentez-le pour éviter l’appel sur plateformes non supportées. En cas de besoin, encapsulez derrière #[cfg] ou un feature flag.
Exemple de protection:
```rust
#[cfg(any(target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64"))]
{ /* appel sûr */ }
```
