PDA

View Full Version : [JAVA] Operazioni atomiche e curiosità sul .class


franksisca
14-06-2006, 15:33
Ragazzi, ho due domande, anzi, due curiosità su java:
1) una operazione del generex++;
è una operazione atomica in ava???

2)concettualmente, il class compilato su macchina intel dovrebbe essere diverso da quello compilato su macchina AMD????
Questa domanda è anche per gli exe di c++ e c!!!


Aspetto delucidazione, e grazie.

Ziosilvio
14-06-2006, 15:42
concettualmente, il class compilato su macchina intel dovrebbe essere diverso da quello compilato su macchina AMD????
Questa domanda è anche per gli exe di c++ e c!!!
Per gli eseguibili C e C++ il compilato è diverso a seconda della macchina, perché deve essere fatto girare dalla macchina.
Per le classi compilate Java il bytecode è lo stesso, perché deve essere fatto girare dalla JVM.

Se sbaglio, correggetemi.

franksisca
14-06-2006, 15:59
Per gli eseguibili C e C++ il compilato è diverso a seconda della macchina, perché deve essere fatto girare dalla macchina.
io ho fatto un programma su cpu amd e l'eseguibile funziona anche su intel, è normale???
se si, perchè seguono uno standard(ANSI)????

PGI-Bis
14-06-2006, 17:23
x++ non è atomica. E un'operazione composta di una lettura e un incremento (un READ e un WRITE). Tra l'altro mi pare che in un messaggio di qualche tempo fa proprio questa sottigliezza fosse il motivo di una bizzarria tra Thread.

Il bytecode è lo stesso. Non sono tecnicamente sicurissimo ma credo che il bytecode delle KVM (le macchine virtuali per i dispositivi CLDC) sia un sottoinsieme di quello della JVM e, quindi, la compatibilità sia piena tra JVM e KVM ma non tra KVM e JVM.

Mi sembra perfettamente possibile che un eseguibile funzioni su macchine Intel e AMD a patto che esso si appoggi ad uno standard condiviso dalle due concrete architetture. Sono pur sempre degli x86, no?

jappilas
14-06-2006, 17:33
io ho fatto un programma su cpu amd e l'eseguibile funziona anche su intel, è normale???
se si, perchè seguono uno standard(ANSI)????
perche' avrebbe dovuto non funzionare? :mbe:

Mi sembra perfettamente possibile che un eseguibile funzioni su macchine Intel e AMD a patto che esso si appoggi ad uno standard condiviso dalle due concrete architetture. Sono pur sempre degli x86, no?
infatti...
a maggior ragione adesso che anche gli amd supportano le estensioni SSE, casi in cui un eseguibile compilato su uno non giri del tutto sull' altro, (magari non girera' al meglio per via delle differenze microarchitetturali e relative ottimizzazioni) dovrebbero essere eccezioni piu' che la norma

franksisca
14-06-2006, 17:34
vero per la terza affermazione.
aspetto conferme sull'atomicità della operazione.

franksisca
15-06-2006, 22:32
up