Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
device-modeling-language — Linguaggio specifico di dominio per scrivere modelli di dispositivi funzionali veloci per piattaforme virtuali. Compila DML in C con chiamate API su misura per il simulatore Intel Simics, consentendo la simulazione hardware e i test di sicurezza. | Kitploit
Strumenti/GitHubGitHub/intel/device-modeling-language
Sicurezza Sistemi EmbeddedVirtualizzazione per la SicurezzaSicurezza HardwareSicurezza Hardware e IoTAnalisi del Firmware
GitHubintel/device-modeling-language

device-modeling-language

Linguaggio specifico di dominio per scrivere modelli di dispositivi funzionali veloci per piattaforme virtuali. Compila DML in C con chiamate API su misura per il simulatore Intel Simics, consentendo la simulazione hardware e i test di sicurezza.

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Vedi Repository
139522220 giorni faRevisionato da Kitploit

Device Modeling Language

Il Device Modeling Language (DML) è un linguaggio specifico di dominio per scrivere modelli di dispositivi funzionali o a livello di transazione veloci per piattaforme virtuali. DML fornisce astrazioni di alto livello adatte a modelli di dispositivi funzionali, inclusi costrutti come banchi di registri, registri, campi di bit, pubblicazione di eventi, interfacce tra modelli e logging. Il codice DML viene compilato dal compilatore DML (DMLC), producendo codice C con chiamate API personalizzate per un simulatore specifico.

Attualmente, il compilatore supporta la creazione di modelli per il simulatore Intel® Simics®, ma in futuro potrebbero essere aggiunti altri back-end.

Compilazione e test di DMLC

Per compilare DMLC, è necessario disporre di un'installazione del simulatore Simics e di un progetto Simics configurato.

Utilizzo della versione pubblica del simulatore Intel Simics

Se non si dispone già di un'installazione del simulatore Simics o di accesso al simulatore Simics tramite canali commerciali, installare la versione pubblica del simulatore Intel Simics e creare un progetto Simics (automatico nel flusso di installazione predefinito).

Compilazione di DMLC da un progetto Simics

Nel tuo progetto Simics, estrai il repository DML nella directory modules/dmlc. Al livello superiore del progetto, esegui make dmlc (o bin\make dmlc su Windows).

Test di DMLC da un progetto Simics

Per eseguire i test unitari forniti con DMLC, esegui make test-dmlc o bin/test-runner --suite modules/dmlc/test dal livello superiore del progetto.

Variabili d'ambiente

Le seguenti variabili d'ambiente sono utili durante lo sviluppo di DMLC. Se lavori regolarmente con un DMLC compilato localmente, considera di impostare le variabili DMLC_DIR, T126_JOBS, DMLC_PATHSUBST e PY_SYMLINKS nel tuo .bashrc. Le restanti variabili è meglio abilitarle solo quando necessario.

DMLC_DIR

Dopo aver compilato DMLC, devi impostare DMLC_DIR su <your-project>/<hosttype>/bin nelle successive invocazioni di make per compilare i dispositivi con il compilatore locale. <hosttype> può essere linux64 o win64 a seconda del tipo di host.

T126_JOBS

Se impostata, il numero specificato di test viene eseguito in parallelo.

DMLC_PATHSUBST

La build di DMLC copia alcuni file di libreria DML, ad esempio dml-builtins.dml, in <hosttype>/bin. Quando si verifica un errore di compilazione, i messaggi di errore punteranno normalmente a questa copia anziché al sorgente. Impostando DMLC_PATHSUBST su <hosttype>/bin/dml=modules/dmlc/lib, i messaggi di errore verranno riscritti per puntare al file sorgente. <hosttype> può essere linux64 o win64 a seconda del tipo di host.

PY_SYMLINKS

Se impostata a 1, make dmlc creerà collegamenti simbolici ai file Python invece di copiarli. Questo ha due effetti: i traceback Python ti porteranno al file sorgente nel repository e non sarà necessario rieseguire make dopo aver modificato i file Python.

DMLC_DEBUG

Se impostata a 1, le eccezioni impreviste nel compilatore vengono inviate a stderr. Il comportamento predefinito è nascondere i traceback in un file dmlc-error.log.

DMLC_CC

Sovrascrive il compilatore predefinito nei test unitari.

DMLC_PROFILE

Se impostata, DMLC esegue l'auto-profilatura e scrive il profilo in un file .prof.

DMLC_DUMP_INPUT_FILES

Se impostata, DMLC emette un archivio .tar.bz2 contenente tutti i file sorgente DML, confezionati in una forma che può essere compilata in modo autonomo. Questo è utile quando un problema DML si manifesta in un ambiente di compilazione complesso e si desidera riprodurre il problema in isolamento. Nell'archivio creato, tutti i file DML si trovano nella stessa directory (al livello superiore o in una serie di sottodirectory chiamate _), e gli import relativi vengono gestiti includendo anche collegamenti simbolici nell'archivio. Su Windows, DMLC a volte non riesce a risolvere correttamente questi collegamenti simbolici; per questo motivo, si consiglia di estrarre e compilare l'archivio solo su Linux.

DMLC_GATHER_SIZE_STATISTICS

Se impostata, DMLC emette un file che termina con -size-stats.json, che mostra statistiche di generazione del codice utili per ridurre la dimensione del codice generato e aumentare la velocità di compilazione. Il file elenca quanto codice C viene generato per ogni metodo DML. L'output è una lista di triple [tot_size, location, num], dove tot_size è il numero totale di byte di codice C generato da una dichiarazione di metodo, num è quante volte il codice C è stato generato da questa dichiarazione (perché è stata espansa da un template) e location è la posizione sorgente della dichiarazione.

Una voce con un tot_size grande e un num grande può essere ridotta dichiarando il metodo come shared; questo dovrebbe approssimativamente dividere la dimensione per num. Una voce con tot_size grande e num uguale a 1 di solito significa che il metodo è dominato da un costrutto come #foreach o #select, e può essere ridotta estraendo il corpo del ciclo in un metodo separato o rielaborando il ciclo in un altro costrutto come foreach.

Nota che le statistiche includono solo il codice generato direttamente dalle dichiarazioni di metodo; la dimensione totale del codice include molto di più. Un megabyte di codice generato dalle dichiarazioni di metodo di solito contribuisce con alcuni secondi di tempo di compilazione.

Scarica lo strumento