Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Le novità MSI del 2026 per i videogiocatori
Le novità MSI del 2026 per i videogiocatori
Con le nuove soluzioni della serie MEG, acronimo di MSI Enthusiast Gaming, l'azienda taiwanese vuole proporre per il 2026 una gamma di proposte desktop che si rivolgono direttamente all'utente più appassionato con schede madri, chassis e sistemi di raffreddamento. Non da ultimi troviamo anche gli alimentatori, che abbinano potenza a ricerca della massima sicurezza di funzionamento.
I nuovi schermi QD-OLED di quinta generazione di MSI, per i gamers
I nuovi schermi QD-OLED di quinta generazione di MSI, per i gamers
MSI continua ad investire nel proporre schermi pensati per rispondere alle esigenze dei videogiocatori, utilizzando la quinta generazione di tecnologia QD-OLED sviluppata da Samsung. Il modello MPG 341CQR QD-OLED X36 è lpultima novità al debutto in concomitanza con il CES 2026, uno schermo curvo di ampia risoluzione pensato per i videogiocatori più esigenti
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
vivo X300 Pro rappresenta un'evoluzione misurata della serie fotografica del produttore cinese, con un sistema di fotocamere migliorato, chipset Dimensity 9500 di ultima generazione e l'arrivo dell'interfaccia OriginOS 6 anche sui modelli internazionali. La scelta di limitare la batteria a 5.440mAh nel mercato europeo, rispetto ai 6.510mAh disponibili altrove, fa storcere un po' il naso
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 07-06-2009, 09:01   #21
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Up.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2009, 10:12   #22
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3739
mi ci è voluto un pochino a mettermi nei panni del kernel, ragionavo sempre da sviluppatore di applicazioni
Difatti quando un processo faceva una send, mi domandavo come potesse scrivere nelle strutture dell'altro pocesso poi mi sono detto: alt! è il kernel che gioca con i due processi e allora tutto è diventato leggermente più chiaro: minix non è poi così brutto come lo si vuole dipingere
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 08-06-2009, 13:52   #23
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
A questo punto, visto che non sei a digiuno sulle architetture degli elaboratori, una spiegazione del perché sarebbe una bestialità non sarebbe male.
Semplicemente motivi di efficienza e semplicità architetturale tanto cari alla filosofia RISC.
Operazioni memoria memoria comportano un supporto da parte di entrambi gli operandi di tutte le possibili combinazioni di indirizzamento, ovvero tanti opcode da gestire.
La cosa è evidenziata anche nell'articolo da te citato:
Quote:
Purtroppo questo è stato anche il suo tallone d’Achille, perché a una grande facilità di fruttamento da parte dei programmatori s’è contrapposta un’architettura interna molto “pesante” e “complicata”
Poi è chiaro l'x86 rimane una delle peggiori architetture mai concepite da mente umana, ma tant'è il peggio si accompagna al peggio [Wintel]
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 08-06-2009, 14:30   #24
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da tomminno Guarda i messaggi
Semplicemente motivi di efficienza e semplicità architetturale tanto cari alla filosofia RISC.
Sì, ma qui stiamo parlando di CISC, che hanno una filosofia completamente diversa e che... alla fine è sopravvissuta.
Quote:
Operazioni memoria memoria comportano un supporto da parte di entrambi gli operandi di tutte le possibili combinazioni di indirizzamento, ovvero tanti opcode da gestire.
Vero, ma bisogna vedere in che modo sono strutturati gli opcode.

Se prendiamo il modello x86, che NON ha operazioni memoria-memoria (se escludiamo i casi particolari rappresentati dalle speciali istruzioni che lavorano su "stringhe", che però non hanno modalità d'indirizzamento, in quanto è codificato internamente), vediamo che l'organizzazione è decisamente più incasinata e il decoder si complica non poco stando dietro alla quasi casualità della mappatura degli opcode e, soprattutto, alla presenza di un numero variabile prefissi.
Quote:
La cosa è evidenziata anche nell'articolo da te citato:
Il motivo lo capirai meglio quando parlerò del Motorola 68020. L'architettura 68000 di per sé è abbastanza semplice da decodificare, ma purtroppo Motorola con lo 020 ha introdotto delle modalità d'indirizzamento mostrosamente complicate che, infatti, erano in grado di mettere in ginocchio anche il 68060 (primo processore superscalare per questa famiglia, le cui prestazioni erano molto elevate in caso di istruzioni semplici come quelle del 68000 appunto).
Quote:
Poi è chiaro l'x86 rimane una delle peggiori architetture mai concepite da mente umana, ma tant'è il peggio si accompagna al peggio [Wintel]
Con un amighista sfegatato sfondi una porta aperta.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 13-06-2009, 09:17   #25
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3739
possiamo asserire che in definitiva minix tutto quello che fa è:

- gestire i processi in modo che a turno tutti usino la CPU
- mettere a dormire i processi nel momento in cui questi faoono I/O
- prendere i messaggi di un processo mittente e portali al processo destinatario che sia driver, server etc....

In definitiva scrive nei PCB dei processi e legge e scrive negli stack dei vari processi in quanto solo il kernel può farlo
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 14-06-2009, 21:13   #26
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Sostanzialmente sì.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 22-06-2009, 13:31   #27
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3739
grazie cdmauro

parlando della fork() il cui scopo è quello di duplicare processi:

Codice:
while (TRUE){
    type.....prompt();
    read...command(command, paramaters);

    if(fork() != 0){

        waitpid(-1, &status, 0);
    } else {
        execve(command, parameters, 0)
    }
}
questo programma che dovrebbe essere la shell di unix, se eseguito passando come argomento un comando + parametri si comporta nel modo seguente:
una volta incontrata la fork() questa ritorna un PID=0 e quindi viene eseguito il ramo dell'else che mandando in esecuzione la execve(...) fa iniziare una duplicazione completa in memoria del processo chiamante.

In memoria ora si hanno due processi identici però:
il processo "padre" ora ha PID != 0 e quindi rimane in attesa sulla waitpid(...)


domande:
- il processo figlio rimane con PID = 0 ?
E quindi si comporta ora come se fosse un padre ?
Come si potrebbe far generare al processo figlio un ulteriore processo figlio ?



Spero di essere stato chiaro

Ultima modifica di misterx : 23-06-2009 alle 08:09.
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 22-06-2009, 13:56   #28
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Più o meno. Immagino che PID sia una variabile locale che dovrebbe contenere il PID del processo figlio, ma non la vedo nel sorgente che hai postato.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 22-06-2009, 14:04   #29
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3739
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Più o meno. Immagino che PID sia una variabile locale che dovrebbe contenere il PID del processo figlio, ma non la vedo nel sorgente che hai postato.
purtroppo ho solo quel frammento di codice. Cmq si, PID viene ritornato dalla fork()

Ultima modifica di misterx : 22-06-2009 alle 14:08.
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 22-06-2009, 14:09   #30
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Allora posso soltanto aggiungere che ogni processo (padre, figlio / figli) ha un proprio PID (mai uguale a zero).
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 22-06-2009, 14:35   #31
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3739
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Allora posso soltanto aggiungere che ogni processo (padre, figlio / figli) ha un proprio PID (mai uguale a zero).
però all'inizio e cioè quando esiste solo il processo padre hai PID = 0 e poi via via il padre diventa != 0 e il figlio varrà sempre zero, giusto ?
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 22-06-2009, 14:37   #32
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Allora ti riferisci necessariamente alla variabile che conterrà il PID.

Quindi il codice sarà qualcosa del tipo:
Codice:
PID = fork();
if(PID != 0){
    waitpid(-1, &status, 0);
}
else {
    execve(command, parameters, 0)
}
e quindi hai ragione.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 23-06-2009, 10:04   #33
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3739
grazie

ho preso del codice postato da un utente e dopo compilazione l'ho lanciato più volte

Codice:
#include <stdio.h>
#include <sys/types.h>
void main()
{
	pid_t pid;
	printf (“Prima della fork: PID = %d\n”, getpid());
	pid = fork();
	if (pid==0) /* PROCESSO FIGLIO*/
	{
		printf (“FIGLIO: PID = %d\n”, getpid());
		exit(0);
	}
	else /* PROCESSO PADRE */
	{
		printf (“PADRE: PID = %d\n”, getpid());
		printf (“PADRE: PID DEL FIGLIO = %d\n”, pid);
		exit(0);
	}
}
digitando ps mi viene mostrato il PID della shell sh che è 92 mentre il PPID di questo programma mandandolo in esecuzione è 92 e il suo PDI è 219.
Quel 92 mi fa capire che il programma che io ho chiamato test è figlio di sh e quindi quando la shell manda in esecuzione test duplica se stessa.
Lanciando test più volte si nota il seguente output:

primo caso
Prima della fork: PID = 219
FIGLIO: PID = 220
PADRE: PID = 219
PADRE: PID DEL FIGLIO = 220

secondo caso
Prima della fork: PID = 227
PADRE: PID = 227
PADRE: PID DEL FIGLIO = 228
FIGLIO: PID = 228


sembrerebbe che si ha una duplicazione della shell e che quindi test diviene una copia della shell ma a sua volta una volta in esecuzione test, questo viene duplicato immediatamente nel primo caso e successivamente nel secondo caso: è dovuto allo scheduler questo effetto ?
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 23-06-2009, 13:42   #34
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Sì, è corretto.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 15-07-2009, 15:51   #35
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3739
una domanda di assembly

Codice:
L1: .data 4 0 ! dichiara la variabile L1 di 4 byte inizializzata a zero
move al, (L1) ! copia il contenuto di L1 nel registro al della CPU
mov (L1), ah ! copia l'indirizzo contenuto nel registro ah nella variabile L1 ???
mov eax, L1 ! copia in eax l'indirizzo in memoria occupato da L1 ?????
le righe in rosso non mi sono molto chiare

grazie

Ultima modifica di misterx : 15-07-2009 alle 15:54.
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 15-07-2009, 17:52   #36
malocchio
Senior Member
 
L'Avatar di malocchio
 
Iscritto dal: Feb 2007
Città: Verona
Messaggi: 1060
Quote:
Originariamente inviato da misterx Guarda i messaggi
una domanda di assembly

Codice:
L1: .data 4 0 ! dichiara la variabile L1 di 4 byte inizializzata a zero
move al, (L1) ! copia il contenuto di L1 nel registro al della CPU
mov (L1), ah ! copia l'indirizzo contenuto nel registro ah nella variabile L1 ???
mov eax, L1 ! copia in eax l'indirizzo in memoria occupato da L1 ?????
le righe in rosso non mi sono molto chiare

grazie
Mi sembra strano che tu non abbia capito le ultime due righe, visto che hai capito la seconda!

L1 è un "nome" a cui l'assembler (o il linker? non ricordo) sostituisce un numero, che è un indirizzo di memoria.

Supponiamo che ad L1 sia associato il numero 0xABC
Se tu provi a sostituire
Codice:
0xABC: .data 4 0 ! riserva 4 byte a partire dall'indirizzo 0xABC
move al, (0xABC) ! copia il contenuto della cella di indirizzo 0xABC in AL
mov (0xABC), ah ! scrive nella cella d'indirizzo 0xABC il contenuto di AH
mov eax, 0xABC ! copia in EAX 0xABC
Non è troppo corretto dire che la prima riga dichiara una variabile. Piuttosto riserva uno spazio di memoria di 4 byte (azzerati). L1 è un nome che tu programmatore usi per riferirti all'indirizzo di memoria associato ad esso (lo spazio).
Le parentesi tonde in assembly funzionano come l'asterisco in C.

Forse l'ultima riga può essere poco intuitiva. Pensa subito a cos'è L1. Un nome. Il nome viene trasformato nella fase di assembling (si dice così?) in un numero (che è un indirizzo di memoria), ben definito. Quindi potendo andare a guardare il codice assemblato tu vedrai l'ultima istruzione proprio come "scrivi in EAX 0xABC", una costante numerica, che è l'indirizzo di memoria che l'assembler durante il suo lavoro ha deciso di associare ad L1.

Il discorso gira un po', spero di averti aiutato
__________________
malocchio è offline   Rispondi citando il messaggio o parte di esso
Old 15-07-2009, 19:19   #37
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3739
Quote:
Originariamente inviato da malocchio Guarda i messaggi
Le parentesi tonde in assembly funzionano come l'asterisco in C.
grazie per la risposta!

scritto così:
mov al, (L1)
mi è chiaro in quanto come tu mi dici è come se scrivessi
al = *L1
tipo, se L1 è all'indirizzo di memoria 100 e tale indirizzo contiene 20, dopo la mov al, (L1) il registro al conterrà 20

scritto così però:
mov (L1), ah
mi dice molto meno però dovrebbe essere ancora:
*L1 = qualcosa
ma questo qualcosa potrebbe essere di fatto o un indirizzo o un valore ?

esempio:
mov (L1), ah

se ah contiene 28, a questo punto l'istruzione qui sopra assegna all'indirizzo di memoria 100 relativo a L1 28 ?

E se scrivessi invece:
mov L1, ah
cambierebbe l'indirizzo di L1 da 100 a 28 ?

scusa ma ho un pò di confusione

grazie

Ultima modifica di misterx : 15-07-2009 alle 19:22.
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 16-07-2009, 09:54   #38
malocchio
Senior Member
 
L'Avatar di malocchio
 
Iscritto dal: Feb 2007
Città: Verona
Messaggi: 1060
Quote:
Originariamente inviato da misterx Guarda i messaggi
grazie per la risposta!

scritto così:
mov al, (L1)
mi è chiaro in quanto come tu mi dici è come se scrivessi
al = *L1
tipo, se L1 è all'indirizzo di memoria 100 e tale indirizzo contiene 20, dopo la mov al, (L1) il registro al conterrà 20
Tutto giusto, attenzione però che L1 non è ALL'INDIRIZZO di memoria, in realtà è L'INDIRIZZO di memoria, L1 diventa proprio un numero!
Ti correggo pignolamente perché sbagliare anche una preposizione potrebbe portare confusione...

Quote:
Originariamente inviato da misterx Guarda i messaggi
scritto così però:
mov (L1), ah
mi dice molto meno però dovrebbe essere ancora:
*L1 = qualcosa
ma questo qualcosa potrebbe essere di fatto o un indirizzo o un valore ?
MM, allora in realtà mi rendo conto che l'asterisco del C può portare ad incomprensioni: nel C di solito lo usi per accedere alla cella di memoria il cui indirizzo è contenuto in un'altra cella (la variabile puntatore), mentre qui accedi all'indirizzo L1. Ho introdotto l'asterisco perché serve per accedere all'indirizzo specificato, ma in questo caso nell'assembly l'indirizzo è un numero costante, nel C (DI SOLITO) è una variabile puntatore.

Attenzione però che essenzialmente non c'è differenza tra le parentesi tonde in assembly e l'asterisco in C, solo che qui stiamo parlando di due casi diversi.

Infatti:
Codice:
mov ah, (bx)
qui vediamo un uso corretto delle parentesi tonde, in cui però l'indirizzo non è specificato come costante numerica (l'L1 di prima), ma è contenuto nel registro BX (gli indirizzi vengono memorizzati in registri a 16/32/64 bit a seconda dell'architettura, ma questo adesso non ci interessa molto), durante l'esecuzione del programma. Anche qui però non possiamo parlare di "puntatore" come lo intendiamo solitamente nel C, perché in C il puntatore è una VARIABILE IN MEMORIA, che contiene l'indirizzo di un'altra variabile. Qui, per quanto ne sappiamo, l'indirizzo è in BX. Quindi è un po' diversa.
Quote:
Originariamente inviato da misterx Guarda i messaggi
esempio:
mov (L1), ah

se ah contiene 28, a questo punto l'istruzione qui sopra assegna all'indirizzo di memoria 100 relativo a L1 28 ?
Sì, considerando l'indirizzo 100 come esempio succede proprio così. In C è traducibile nell'istruzione
Codice:
*(100) = ventotto
con l'unica differenza che ventotto è una variabile, AH è un registro.
In realtà in C non vedrai mai quest'istruzione, perché non puoi decidere a tempo di compilazione un indirizzo specifico a cui vuoi accedere (se non in casi estremi; di solito non puoi perché il sistema operativo non ti permette di accedere a celle di memoria che non ti "appartengono", come processo in esecuzione).
Le variabili globali in un programma C sono associate ciascuna ad un'etichetta come L1. Infatti, durante il processo di compilazione, esse sono tradotte in indirizzi!
Quote:
Originariamente inviato da misterx Guarda i messaggi
E se scrivessi invece:
mov L1, ah
cambierebbe l'indirizzo di L1 da 100 a 28 ?

scusa ma ho un pò di confusione

grazie
Assolutamente No! Pensa ancora "L1 è un numero". Rendiamo più leggibile l'istruzione scrivendola in un linguaggio di prog degno di tal nome:
Codice:
100 = ventotto
No, a questo punto vedi che non ha senso assegnare alla costante 100 il valore 28..
E' anche traducibile in (utile se hai un minimo di esperienza nei puntatori, e penso che tu ce l'abbia)
Codice:
&L1 = ventotto
Quando usi l'ampersend ti riferisci all'indirizzo in cui è contenuta una variabile, no? Ben non vedrai mai a sinistra di un uguale l'operatore &

Se non ti è totalmente chiara una qualsiasi cosa chiedi assolutamente!
__________________
malocchio è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Le novità MSI del 2026 per i videogiocatori Le novità MSI del 2026 per i videogiocato...
I nuovi schermi QD-OLED di quinta generazione di MSI, per i gamers I nuovi schermi QD-OLED di quinta generazione di...
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
HP Digital Passport, integrazione Copilo...
HP EliteBook X G2 ed EliteBoard G1a uffi...
Tutti possono avere un Alienware: al CES...
La gamma XPS di Dell si rinnova completa...
HyperX OMEN: ufficiali 3 nuovi laptop, 4...
HP presenta al CES 2026 la nuova gamma d...
Nuova Audi A2 e-tron: la compatta elettr...
Anche a Roma arriva la Zona 30: limite d...
Motorola sfida il mercato premium: in ar...
Snapdragon X2 Elite Extreme: Qualcomm ut...
Il pedaggio in autostrada ora costa di p...
ARC Raiders: svelati alcuni dettagli sul...
Assassin's Creed Codename Hexe affidato ...
A volte ritornano: al CES 2026 il nuovo ...
ricarica 67 W e 8 GB di RAM: questo real...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 06:22.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v