Pouah, tu me déçois ..
Tu ne me donnes pas de code !
Tu me dit que, pour faire de l'accès mémoire en JS, il faut coder un accès mémoire en C !
Bientôt, tu vas me dire que tu fais un programme en JS, il te suffit de le faire en C et d'utiliser exec ..
Trop facile, trop facile..
EDIT: haaa, ben si, voici un super exemple (
http://stackoverflow.com/questions/15347985/raw-memory-access-java-python).
L'idée est d'utiliser la mémoire du processus courant via procfs.
Je te propose donc d'utiliser directement /proc/kcore : tant qu'à utiliser un truc pratique et à ne surtout pas être de mauvaise fois, autant y aller jusqu'au bout !
Ben oui, il y a une instruction qui permet un appel système. Ce qui n'a absolument aucun rapport avec le concept d'interruption dont il était question. Une interruption c'est quand un périphérique veut interrompre le CPU, donc c'est asynchrone. L'instruction int n'interrompt rien, elle est synchrone.
Rhoo !
Et elle fait quoi, l'instruction ?
Je te laisse chercher ?
Indice: chercher la différence entre interruption synchrone et asynchrone.
Vas-y, donne moi le sens sémantique!
Qui porte du sens;
On peut donc dire que tout est sémantique : pour tout groupe d'élèment aléatoire, tu peux trouver une suite logique donnant un sens à l'ensemble.
En revanche, dire que cela n'a pas de sens ne met qu'en lumière ton incapacité (ou ta non-volonté ?) à le trouver
Il ne dit rien de tel. Il ne parle même pas d'interruption!
Mais si, mais si, c'est la deuxième colonne du tableau que j'ai copié : l'instruction à utiliser.
Dans quels tous les cas?
Dans tout les cas qui sont répertoriés dans mon manuel.
Mais bon, même en restant théorique : comment peut-on faire pour qu'un programme se coupe volontairement afin d'obtenir des choses du noyau ?
Hormis les syscall à base d'instruction spécifique et d'interruption, comment un processus peut-il "ne rien faire" ? Il a un temps processeur alloué.
La seule solution qui me vient à l'esprit consisterai à mettre à disposition les infos pour le syscall, et à perdre du temps en instruction inutile.
Débile comme solution, non ?
Ah bon, tu peux donner un exemple?
Tu l'as très bien fait tout seul !
En fonction de ce que tu as besoin, tu peux utiliser l'un des deux types de switch: soft ou hard, et donc ne sauvegarder qu'une partie des trucs à sauvegarder (c'est à dire, pas la totalité).
Et dans ce cas, on peut donc dire que le switch est plus "conservateur" (= économe, si tu préfères)
Par exemple l'ordre en mémoire des membres d'une structure est imposé, le compilateur ne peut pas réorganiser pour gagner de la place, sauf à démontrer que ça n'a aucun impact, par analyse globale (passablement difficile, il faudrait suivre tous les pointeurs, je pense qu'aucun compilateur au monde ne s'amuse à ça).
Le C ne permet pas de dire : là je veux la représentation précisèment comme ça, là je m'en fou. (Ada le permet, mais l'autre taré va encore dire que je m'éloigne du sujet.)
Par exemple si une fonction reçoit deux pointeurs a et b, alors a[p] et b[q] peuvent désigner la même chose, même si a!=b. (En Java ce n'est pas le cas puisqu'il n'y a pas de pointeurs d'éléments mais des "références" (ce qui est façon politiquement correcte et hypocrite(*) de dire : des pointeurs) sur des tableaux.)
Fortran considère que a et b ne peuvent pas désigner la même chose, ce qui est une clé de la performance.
(*) Java est à la base un langage de bouffons hypocrites neuneu
Par exemple si le compilateur optimise les opérations portant sur des int en utilisant les lois de l'arithmétique (comme a*x/a est remplacé par x), il peut casser du code qui utilise le comportement habituel des int qui est le comportement modulaire fournis par le CPU - donc le C n'est pas du tout un langage de bas niveau puisqu'il ne permet pas d'utiliser les opérations arithmétiques du CPU (bon, on peut jouer sur volatile mais ça casse la performance vu qu'un compilateur ne veut pas en général mettre un volatile en registre même si rien ne s'y oppose).
Linus n'est donc pas content que le compilateur se mette à optimiser les opérations arithmétiques, et il n'est pas le seul. Les gens se sentent floués parce qu'ils pensaient que le C était proche du CPU, ce qui n'était pas le cas (enfin personne n'a promis ça).
Bon, je vais passer sur des subtilités dont j'ai parlé dans un autre topic sur les connards de chez GNU C et le libre de merde, topic qui est parti en vrille à cause d'un taré. Sauf si ça intéresse quelqu'un...
Bref C est un outil de merde.
Hum hum;
En gros, tu critiques le concept de tableau : un tableau contient un autre tableau.
char* n'est pas non plus un tableau de caractère.
Déjà si on veut être précis char* est un type, pas une valeur. Un type pointeur.
Une valeur de type char* peut pointer sur un ou plusieurs objets de type char, ou pas.
Un objet de type char* peut contenir une valeur de type char*, ou pas.
Tu peux aussi dire : char* est un entier.
Qu'est-ce que vous appelez "interruptions système"?
Si tu parles d'une interruption, c'est un message beep;