Torna indietro   Hardware Upgrade Forum > Software > Programmazione

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
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'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
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-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 17-03-2004, 22:30   #1
VegetaSSJ5
Senior Member
 
L'Avatar di VegetaSSJ5
 
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
Utilizzo di semafori sotto linux

Salve a tutti, dovrei realizzare entro pochi giorni un programma che mi serve per l'università nel quale c'è bisogno che io faccia uso di semafori per sincronizzare dei processi. Questo programma deve essere sviluppato in ambiente linux. Ho cercato di documentarmi riguardo la creazione e l'utilizzo dei semafori e ho capito che per dichiarare dei semafori bisogna richiamare la funzione:

int semget(key_t key, int nsems, int flag)

Il mio dubbio riguarda il parametro key.
Non ho capito dove prenderlo e qual'è il suo scopo. Poichè è una questione urgente mi auguro che mi rispondiate al + presto, grazie.
VegetaSSJ5 è offline   Rispondi citando il messaggio o parte di esso
Old 18-03-2004, 10:04   #2
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
E' un numero unico che identifica il semaforo (in generale un oggetto condiviso) nell'intero sistema.
Devi usare la stessa key nelle varie applicazioni per utilizzare lo stesso semaforo. Scegli tu un valore.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 18-03-2004, 10:15   #3
gabriele81
Senior Member
 
L'Avatar di gabriele81
 
Iscritto dal: Dec 2001
Città: Roma
Messaggi: 542
In pratica il tipo key_t è una ridefinizione del tipo int, devi assegnare tu un valore arbitrario al semaforo, che come ti ha detto ilsensine dovrai utilizzare nel tuo programma per riferirti a quel semaforo quando dovrai farci delle operazioni.
Infatti alla chiamata semop, che serve a cambiare il valore dei semafori, devi passargli quel valore per dirgli su quale semaforo operare. Ora non mi ricordo la sintassi, ma dovrebbe essere proprio il primo parametro.
__________________
Il 90% dei problemi di un computer si trova tra la tastiera e la sedia.
XP2500+@3200+|A7N8X Deluxe|1,25 GB DDR400|Radeon 9550|HD 160+320 GB SATA|WinXP Pro|Fastweb 6 Mb/s
gabriele81 è offline   Rispondi citando il messaggio o parte di esso
Old 18-03-2004, 10:35   #4
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da gabriele81
Infatti alla chiamata semop, che serve a cambiare il valore dei semafori, devi passargli quel valore per dirgli su quale semaforo operare.
No, credo che tutte le operazioni successive (semop, semctl...) vanno eseguite utilizzando il valore restituito da semget come handle.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 18-03-2004, 10:58   #5
gabriele81
Senior Member
 
L'Avatar di gabriele81
 
Iscritto dal: Dec 2001
Città: Roma
Messaggi: 542
Quote:
Originariamente inviato da ilsensine
No, credo che tutte le operazioni successive (semop, semctl...) vanno eseguite utilizzando il valore restituito da semget come handle.

oooooooops....mi sa che hai ragione....volevo far vedere che ne sapevo qualcosa anche io ma ho cannato l'esempio...
__________________
Il 90% dei problemi di un computer si trova tra la tastiera e la sedia.
XP2500+@3200+|A7N8X Deluxe|1,25 GB DDR400|Radeon 9550|HD 160+320 GB SATA|WinXP Pro|Fastweb 6 Mb/s
gabriele81 è offline   Rispondi citando il messaggio o parte di esso
Old 18-03-2004, 15:10   #6
VegetaSSJ5
Senior Member
 
L'Avatar di VegetaSSJ5
 
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
ragazzi vi ringrazio. quindi e ho ben capito dovrei fare una cosa di questo genere:
Codice:
int mutex;
mutex=semget(0, 1, IPC_CREATE); /*creo l'insieme di semafori */
giusto? ora però devo inizializzare il semaforo e devo usare la funzione semctl:


int semctl(int semid, int sem_num, int command, union semun ctl_arg);

ora se ho ben capito i primi due parametri sono rispettivamente il valore restituito da semget e la key che ho passato a semget, ma gli altri due parametri, cioè command e semnum, cosa sono e come li ottengo? io dovrei inizializzare il semaforo al valore 2 in modo tale che entrino nella sezione critica due processi alla volta, come devo fare? inoltre per effettuare le operazioni di wait e signal su questo semaforo come devo fare?
ragazzi vi ringrazio per la vostra disponibilità; rispondendomi mi state facendo un grossissimo favore, grazie!

Ultima modifica di VegetaSSJ5 : 18-03-2004 alle 15:12.
VegetaSSJ5 è offline   Rispondi citando il messaggio o parte di esso
Old 18-03-2004, 15:16   #7
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da VegetaSSJ5
semget(0, 1, IPC_CREATE);
Vorresti cortesemente evitare per key dei valori riservati, possibilmente usati da altri o comunque sospetti?

Guarda caso, il valore "0" coincide con IPC_PRIVATE (v. man semget e /usr/include/bits/ipc.h )

Hai a disposizione 2^32 valori, proprio 0 dovevi prendere?
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 18-03-2004, 15:23   #8
gabriele81
Senior Member
 
L'Avatar di gabriele81
 
Iscritto dal: Dec 2001
Città: Roma
Messaggi: 542
Quote:
Originariamente inviato da VegetaSSJ5
ragazzi vi ringrazio. quindi e ho ben capito dovrei fare una cosa di questo genere:
Codice:
int mutex;
mutex=semget(0, 1, IPC_CREATE); /*creo l'insieme di semafori */
giusto? ora però devo inizializzare il semaforo e devo usare la funzione semctl:


int semctl(int semid, int sem_num, int command, union semun ctl_arg);

ora se ho ben capito i primi due parametri sono rispettivamente il valore restituito da semget e la key che ho passato a semget, ma gli altri due parametri, cioè command e semnum, cosa sono e come li ottengo? grazie ragazzi...

Stavolta mi sono documentato...

alla semctl devi passare nell'ordine:

- identificativo del semaforo (o meglio dell'array di semafori) restituito dalla semget

- numero del semaforo nell'array di semafori su cui eseguire l'operazione

- Tipo di comando

- parametri del comando

Quando tu chiami la semget come secondo parametro specifichi quanti semafori vuoi creare, e nella semctl devi indicare su quale operare (con 0 indichi il primo, con 1 il secondo ecc.). La key serve solo nell'invocazione della semget, poi ti serve l'handle restituita dalla funzione.

I tipi di comando possono essere questi (i più comuni):

- IPC_RMID: per eliminare l'array di semafori identificato da semid; gli altri parametri vengono ignorati

- GETALL: per leggere il valore di tutti i semafori nell'array, i valori vengono copiati in un buffer che il programmatore dovrà creare e passare alla funzione nel campo arg (l'ultimo).

- SETALL: setta i valori di tutti i semafori dell'array leggendo i valori da un buffer precedentemente impostato dal programmatore e passato come ultimo parametro.

- GETVAL: la funzione restituisce il valore del semaforo specificato dal numero passato come secondo argomento, l'ultimo parametro viene ignorato

- SETVAL: imposta il valore del semaforo specificato da sem_num uguale al valore passato come ultimo parametro.
__________________
Il 90% dei problemi di un computer si trova tra la tastiera e la sedia.
XP2500+@3200+|A7N8X Deluxe|1,25 GB DDR400|Radeon 9550|HD 160+320 GB SATA|WinXP Pro|Fastweb 6 Mb/s

Ultima modifica di gabriele81 : 18-03-2004 alle 15:28.
gabriele81 è offline   Rispondi citando il messaggio o parte di esso
Old 18-03-2004, 20:46   #9
VegetaSSJ5
Senior Member
 
L'Avatar di VegetaSSJ5
 
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
Quote:
Originariamente inviato da gabriele81
Stavolta mi sono documentato...

alla semctl devi passare nell'ordine:

- identificativo del semaforo (o meglio dell'array di semafori) restituito dalla semget

- numero del semaforo nell'array di semafori su cui eseguire l'operazione

- Tipo di comando

- parametri del comando

Quando tu chiami la semget come secondo parametro specifichi quanti semafori vuoi creare, e nella semctl devi indicare su quale operare (con 0 indichi il primo, con 1 il secondo ecc.). La key serve solo nell'invocazione della semget, poi ti serve l'handle restituita dalla funzione.

I tipi di comando possono essere questi (i più comuni):

- IPC_RMID: per eliminare l'array di semafori identificato da semid; gli altri parametri vengono ignorati

- GETALL: per leggere il valore di tutti i semafori nell'array, i valori vengono copiati in un buffer che il programmatore dovrà creare e passare alla funzione nel campo arg (l'ultimo).

- SETALL: setta i valori di tutti i semafori dell'array leggendo i valori da un buffer precedentemente impostato dal programmatore e passato come ultimo parametro.

- GETVAL: la funzione restituisce il valore del semaforo specificato dal numero passato come secondo argomento, l'ultimo parametro viene ignorato

- SETVAL: imposta il valore del semaforo specificato da sem_num uguale al valore passato come ultimo parametro.
grazie ragazzi!

x ilsensine
mamma mia che sfortuna che ho! proprio quello ho beccato.... vabbè vorrà dire che metterò come valore 1367, spero non corrisponda a nulla in particolare...

x gabriele81
ti ringrazio molto ora è tutto più chiaro. dunque dovrei fare così:
Codice:
int mutex;
mutex=semget(1367, 1, IPC_CREATE); /*creo l'insieme di semafori */
semctl(mutex, 0, SETVAL, 2); /*inizializzo a due l'unico semaforo che ho creato semaforo */
ragazzi un'ultima cosa: la semctl restituisce un intero, cioè cosa? grazie 2^20
VegetaSSJ5 è offline   Rispondi citando il messaggio o parte di esso
Old 19-03-2004, 09:21   #10
gabriele81
Senior Member
 
L'Avatar di gabriele81
 
Iscritto dal: Dec 2001
Città: Roma
Messaggi: 542
Quote:
Originariamente inviato da VegetaSSJ5
ti ringrazio molto ora è tutto più chiaro. dunque dovrei fare così:
Codice:
int mutex;
mutex=semget(1367, 1, IPC_CREATE); /*creo l'insieme di semafori */
semctl(mutex, 0, SETVAL, 2); /*inizializzo a due l'unico semaforo che ho creato semaforo */
ragazzi un'ultima cosa: la semctl restituisce un intero, cioè cosa? grazie 2^20
Il codice mi sembra giusto, solo una cosa: di solito i mutex hanno valore 0 o 1, se lo inizializzi a 2 dagli un altro nome, giusto per non confondere le idee

La semctl restituisce -1 in caso di errore, oppure il valore del semaforo specificato se come comando hai messo GETVAL, negli altri casi un valore positivo. Quando la invochi ti conviene fare un check sul valore restituito, se è < 0 lanci un errore (o un segnale o quello che ti fa più comodo).
__________________
Il 90% dei problemi di un computer si trova tra la tastiera e la sedia.
XP2500+@3200+|A7N8X Deluxe|1,25 GB DDR400|Radeon 9550|HD 160+320 GB SATA|WinXP Pro|Fastweb 6 Mb/s
gabriele81 è offline   Rispondi citando il messaggio o parte di esso
Old 19-03-2004, 11:48   #11
VegetaSSJ5
Senior Member
 
L'Avatar di VegetaSSJ5
 
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
perfetto. ragazzi grazie a tutti, cmq credo in questi giorni di avere di nuovo bisogno di voi per cui occhio a questo thread. ciao!
VegetaSSJ5 è offline   Rispondi citando il messaggio o parte di esso
Old 19-03-2004, 15:34   #12
VegetaSSJ5
Senior Member
 
L'Avatar di VegetaSSJ5
 
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
ragazzi come non detto, rieccomi qua. dunque spiegamo il problema: io devo creare 2*N (con N dato in input) processi e li devo mettere in attesa ad un semaforo. io ho scritto questo, ma non so come devo usare semop(...) per effettuare le wait e le signal:
Codice:
void genera_giocatori (int N) {
	pid_t giocatori[2*N];
	int i=0;
	int AccessoAlTavolo;
	AccessoAlTavolo=semget(200, 1, IPC_CREAT);
	semctl(AccessoAlTavolo, 0, SETVAL, 0);
	for (i=0; i<2*N; ++i) {
		pid_t pid= fork();
		if (pid!=0) giocatori[i]=pid;
		else if (pid==0) WAIT SEMAFORO ACCESSO AL TAVOLO;
			else {
				perror("Si è verificato un errore durante la creazione dei processi giocatori");
				exit(1);
			}
	}
}
in praticami creo un array dove metto i pid dei processi che ho generato, creo ed inizializzo il semaforo AccessoAlTavolo a 0 (in modo tale che nessun processo appena che io faccia la wait sul semaforo di quel processo mi entri nella sezione critica), faccio una wait al processo appena creato sul semaforo. il problema è: come si usa semop per fare la wait (e la signal)?

inoltre ho un'altra domanda: data l'istruzione
Codice:
pid_t aaa;
aaa=fork();
il processo padre ha in aaa il valore del pid del processo generato. il processo generato (figlio) ha in aaa il valore 0, giusto? ma allora se faccio così
Codice:
pid_t arbitro;
arbitro=fork();
if (arbitro==0) genera_giocatori(n);
quando eseguo il programma, il processo arbitro che ho creato dovrebbe eseguirmi la fork (perchè il processo arbitro ha in arbitro il valore 0 e quindi entra nell'if) invece non lo fa, come mai???

Ultima modifica di VegetaSSJ5 : 19-03-2004 alle 15:36.
VegetaSSJ5 è offline   Rispondi citando il messaggio o parte di esso
Old 19-03-2004, 16:44   #13
Tortellone
Senior Member
 
L'Avatar di Tortellone
 
Iscritto dal: Sep 2002
Città: Napoli
Messaggi: 543
Quote:
Originariamente inviato da ilsensine
Vorresti cortesemente evitare per key dei valori riservati, possibilmente usati da altri o comunque sospetti?

Guarda caso, il valore "0" coincide con IPC_PRIVATE (v. man semget e /usr/include/bits/ipc.h )

Hai a disposizione 2^32 valori, proprio 0 dovevi prendere?

Rotfl mi ha fatto divertire molto questo intervento


Tortellone è offline   Rispondi citando il messaggio o parte di esso
Old 25-03-2004, 14:27   #14
VegetaSSJ5
Senior Member
 
L'Avatar di VegetaSSJ5
 
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
ragazzi il problema precedente è stato risolto, ma ora ho bisogno di nuovo di una vostra piccola mano:
allora, ci sono dei processi giocatori che giocano a due a due e poi alla fine della partita si mettono in pausa con la funzione pause(). Poi c'è il processo arbitro che deve fare dei conti e poi prendere i due processi che hanno ottenuto il punteggio migliore. Ho individuato tali processi e ho ucciso gli altri con kill(PID, SIGKILL), a questo punto dovrei svegliare i due processi che hanno ottenuto punteggio migliore e portarli ad una funzione seconda_fase(). Come faccio a svegliare questi processi e a portarli alla funzione seconda_fase()?
VegetaSSJ5 è offline   Rispondi citando il messaggio o parte di esso
Old 25-03-2004, 15:54   #15
cn73
Senior Member
 
L'Avatar di cn73
 
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
[EDIT]
cn73 è offline   Rispondi citando il messaggio o parte di esso
Old 25-03-2004, 20:14   #16
VegetaSSJ5
Senior Member
 
L'Avatar di VegetaSSJ5
 
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
Quote:
Originariamente inviato da cn73
[EDIT]
VegetaSSJ5 è offline   Rispondi citando il messaggio o parte di esso
Old 26-03-2004, 09:02   #17
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da VegetaSSJ5
ragazzi il problema precedente è stato risolto, ma ora ho bisogno di nuovo di una vostra piccola mano:
allora, ci sono dei processi giocatori che giocano a due a due e poi alla fine della partita si mettono in pausa con la funzione pause(). Poi c'è il processo arbitro che deve fare dei conti e poi prendere i due processi che hanno ottenuto il punteggio migliore. Ho individuato tali processi e ho ucciso gli altri con kill(PID, SIGKILL), a questo punto dovrei svegliare i due processi che hanno ottenuto punteggio migliore e portarli ad una funzione seconda_fase(). Come faccio a svegliare questi processi e a portarli alla funzione seconda_fase()?
Semplicemente, manda un segnale a tua scelta (ad es. SIGUSR1) ai processi da svegliare.
Normalmente SIGUSR1 causa la terminazione del processo, a meno che non gli assegni una funzione per gestirlo.
v. man signal (o sigaction) per informazioni su come assegnare un handler a un segnale. A te basta una funzione vuota, che evita la terminazione del processo.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 26-03-2004, 10:37   #18
cn73
Senior Member
 
L'Avatar di cn73
 
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
Quote:
Originariamente inviato da VegetaSSJ5
Mi ero accorto di avere detto una castronata
cn73 è offline   Rispondi citando il messaggio o parte di esso
Old 26-03-2004, 11:41   #19
VegetaSSJ5
Senior Member
 
L'Avatar di VegetaSSJ5
 
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
Quote:
Originariamente inviato da ilsensine
Semplicemente, manda un segnale a tua scelta (ad es. SIGUSR1) ai processi da svegliare.
Normalmente SIGUSR1 causa la terminazione del processo, a meno che non gli assegni una funzione per gestirlo.
v. man signal (o sigaction) per informazioni su come assegnare un handler a un segnale. A te basta una funzione vuota, che evita la terminazione del processo.
ti ringrazio anche se avevo risolto da solo. ho mandato il segnale SIGINT. scusa ma se io il segnale noon lo gestisco, cioè non creo una funzione per gestire sigint, il processo termina? nel caso dovessi creare comunque questa funzione, non potresti scrivermela tu? tieni conto che i processi che devo svegliare sono in pausa...
VegetaSSJ5 è offline   Rispondi citando il messaggio o parte di esso
Old 26-03-2004, 11:56   #20
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da VegetaSSJ5
scusa ma se io il segnale noon lo gestisco, cioè non creo una funzione per gestire sigint, il processo termina?
Normalmente sì. Non so se sigint è ignorato di default.

Quote:
nel caso dovessi creare comunque questa funzione, non potresti scrivermela tu? tieni conto che i processi che devo svegliare sono in pausa...
Così è come farei io:
Codice:
#include <signal.h>
#include <unistd.h>

int last_signal = 0;

void null_sighandler(int signum) {
	last_signal = signum;
	signal(signum, null_sighandler);
}

void do_pause() {
	while(last_signal!=SIGUSR1)
		pause();
	last_signal = 0;
}

int main() {
	signal(SIGUSR1, null_sighandler);
(...)
	do_pause();
}
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


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...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
E-bike illegali, a Verona il più ...
Quali sono i giochi più venduti su Steam...
HONOR sta per lanciare un nuovo smartpho...
Jared Isaacman sarà alla guida de...
Il Tesla Cybertruck non arriverà ...
Xiaomi Watch 5 è ufficiale: architettura...
CD Projekt vende GOG: il co-fondatore Mi...
Il meglio di Amazon in 26 prodotti, aggi...
L'Europa fa retromarcia sulle pompe di c...
Google investe 4,75 miliardi per i data ...
Meta accelera sullintelligenza artificia...
Il TV QLED TCL da 65'' costa solo 399€ s...
La rivoluzione delle batterie 4680 di Te...
Mini aspiratore a batteria per auto e no...
Konami punta a pubblicare un nuovo gioco...
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: 15:09.


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