30

GoldenCrystal :
MSIL = Microsoft Intermédiate Language
C'est une sorte de language assembleur intérmédiaire qui est compilé (pas interprêté) pendant l'éxécution ou alors sur demande. L'intérêt par rapport au java est justement la compilation dynamique, et aussi le fait que ce n'est pas généré que par le C#, mais aussi par le C++, le VB, ou le javascript (intérêt discutable sur la javascript...)

Le Java aussi est compilé à la volée, pendant l'exécution, non ?
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

31

Presque... Il est précompilé, et t'as besoin d'une Machine Virtuelle pour exécuter du code Java... il existe des moyens d'exécuter directement du Java : soit un copilo spécial qui te fait un programme plus lourd mais un poil plus rapide (je ne sais pas si ça se fait encore, on avait ça en Java 1.2.1 à l'époque), soit une integration de la VM à l'exéctuable généré... c'est lourd, gros et tout ce qu'on veut...
avatar

32

L'exécution d'un programme C# ne requiert pas l'installation d'un "serveur" quelconque ?
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

33

J'en sais rien, je ne me suis pas penché sur ce truc, encore
avatar

34

avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

35

Nil
: Presque... Il est précompilé, et t'as besoin d'une Machine Virtuelle pour exécuter du code Java...

Pour les VM standard (comme celle de Sun), je ne crois pas qu'il y ait du tout de compilation en Just In Time, contrairement à la VM pour C#.

36

Non. En general, il est interprete.

37

Oui, mais le code est "précompilé", non (même si ça n'est pas une vraie précompilation) ? le fichier .java qu'on exécute est d'abord transformé en un fichier spécifique qui n'est pas le fichier source... Ou alors c'est peut-être simplement une tokenisation ? (je n'avais peut-être pas pensé à ça, en fait).
avatar

38

Le bytecode Java, c'est déjà tokenizé triroll

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

39

Bon, ok, je me tais, et je vais repotasser mes cours cheeky
avatar

40

nEUrOO :
mistertruc: qu'est-ce que tu trouve plus structuré sur un mot ?
ASM: 
  move.w #1,d1
  move.w #2,d2
  add.w d1,d1

C:
  1+2


ps: pas de commentaires, sur le moveq a la place des move ... merki smile



lol j'aurais mis :
move.w #1,d0
move.w #2,d1
add.w d0,d1 //et surtout pas : add.w d1,d1

41

Moi j'aurais donne plutot comme exemple:
int f(void *f) __attribute__((__regparm__(1)))
{
return __attribute__((__regparm__(2))) (int (*f)(int, int))(1,2);
}
en asm:
moveq #1,d0
moveq #2,d1
jmp (a0)
grin

42

tu peux expliquer ces quelques lignes s'il te plait?
avatar
Maintenant j'ai la flemme de garder une signature à jour sur ce site. Je n'ai même plus ma chaîne Exec sous la main.

43

Lesquelles ? C'est du GNU-C standard rotfl

44

int f(void *f) __attribute__((__regparm__(1)))la fonction f prend un pointeur dans le registre a0.
Mais j'ai un doûte. On peut déclarer une variable locale ou un paramètre qui porte le même nom que la fonction ? doom__attribute__((__regparm__(2))) (int (*f)(int, int))(1,2);déclare une fonction dont l'adresse est contenue dans f, qui a pour prototype int f(int x, int y); dont les paramètres se passent dans d0 et d1, et appelle cette fonction en passant 1 et 2 en paramètres.
J'ai un doûte sur l'emplacement du __attribute__((__regparm__(2))) smile
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

45

Si si, on peut le placer ici.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

46

int f(void *f) __attribute__((__regparm__(1)))
{
return __attribute__((__regparm__(2))) (int (*f)(int, int))(1,2); }
C'est du GNU-C standard

Pas vraiment, non... Le premier __attribute__ doit se mettre juste avant ou juste après 'int', et pour la deuxième ligne : le __attribute__ n'est pas placé au bon endroit (et de toute façon même si ça avait été le bon endroit il aurait fallu mettre des parenthèses autour). Il faut le mettre avant ou après le *. Enfin, le f n'est pas bien placé : c'est exactement comme si tu écrivais *(char *f) au lieu de *(char *)f (i.e. tu as mis une syntaxe de déclaration au lieu d'une syntaxe de cast). Il faut le mettre juste avant (1,2) et rajouter des parenthèses pour que le cast soit appliqué à la fonction mais pas au résultat...

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

47

A part ça l'exemple est pas mal trouvé... (et pour ce qui est de l'exemple 1+2, on peut faire move.w #1+2,d0 en ASM tongue)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

48

Desole j'ai tape ca a la va-vite comme d'habitude.

49

Ben alors faut pas dire que c'est du GNU C standard tongue

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

50

Ben si. J'utilise que du GNU-C standard avec quelles fautes de frappes.