30

http://www.classiccmp.org/pipermail/cctech/2008-April/093414.html

On either a bus error or an address error exception, the information
the processor puts in the exception stack frame is not sufficient to
either resume or undo the faulted instruction. [*] These errors were
considered fatal, and the typical "recovery" was to kill the process
that faulted. Obviously this is not conducive to implementation of
virtual memory.

31

Ah je vois, c'est probablement que l'adresse qui foire n'est pas empilée (seuls PC et SR le sont).
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.

32

vala, sans doute.

c'est très con d'ailleurs.

33

Link (./31) :
Ah je vois, c'est probablement que l'adresse qui foire

Euh, c'est pas le PC ça justement ? cheeky

34

Il veut dire l'adresse dont la lecture ou l'écriture a causé la faute.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

35

Cela dit en théorie, ce n'est pas strictement nécessaire parce que tu peux désassembler l'instruction qui a foiré pour connaître l'adresse fautive… C'est juste de quelques ordres de magnitude plus lent. cheeky
Et puis à la base je pense pas que ce pauvre CPU ait été conçu pour avoir une mémoire virtuelle, donc c'est pas sa faute, et c'est pas un bug. :]
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

36

Mais c'est con de perdre le mmu pour si peu ... sad

K² : merci

37

a l'époque du 68k000 le mmu c'était 'achement high tech tripo

38

GoldenCrystal (./35) :
Cela dit en théorie, ce n'est pas strictement nécessaire parce que tu peux désassembler l'instruction qui a foiré pour connaître l'adresse fautive… C'est juste de quelques ordres de magnitude plus lent. cheeky
Et puis à la base je pense pas que ce pauvre CPU ait été conçu pour avoir une mémoire virtuelle, donc c'est pas sa faute, et c'est pas un bug. :]

Pas exactement car dans mes souvenirs, le pc pointe vers l'instruction suivante, donc il faut que tu puisses remonter d'une instruction. Sinon ca aurait été bien plus simple.
Je ne suis même pas sûr de ce qui se passe pour des instructions du style move.l var1.l,var2.l
Edit: Reset / Bus Error / Address Error sont initiées dans les 2 cycles suivants l'anomalie (Group 0), donc tu peux effectivement avoir le pc au milieu d'une instruction.

39

avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

40

Marrant. smile
Par contre, je comprends pas comment utiliser le fait que les copies de longwords soient faites en deux fois (comme certains jeux le font). A part le fait que move soit interruptible, qu'est-ce qu'on peut bien faire entre les deux ?

41

Folco (./40) :
Par contre, je comprends pas comment utiliser le fait que les copies de longwords soient faites en deux fois (comme certains jeux le font). A part le fait que move soit interruptible, qu'est-ce qu'on peut bien faire entre les deux ?
Si c'est en RAM, je ne vois pas trop non plus (à part que c'est une race condition potentielle dans les systèmes avec plusieurs processeurs, mais ça c'est un effet indésirable).

Par contre ça peut jouer si tu accèdes à deux registres 16 bits consécutifs d'un périphérique en utilisant une seule instruction 32 bits. Vu qu'il y a souvent des effets secondaires des accès en écriture (et parfois même en lecture), l'ordre d'accès peut avoir une importance.

Exemple : certains périphériques qui possèdent plusieurs registres internes n'utilisent que 2 adresses externes : une qui sert d'index (le numéro du registre interne à lire/écrire), et l'autre dans laquelle tu mets ou récupère les données. Généralement ces 2 adresses sont consécutives. Pour gagner du temps, on peut faire une seule écriture 32 bits qui écrit l'index et les données, mais ça ne marche correctement que si c'est l'adresse d'index qui est écrite en premier.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

42

Zerosquare (./41) :
Exemple : certains périphériques qui possèdent plusieurs registres internes n'utilisent que 2 adresses externes : une qui sert d'index (le numéro du registre interne à lire/écrire), et l'autre dans laquelle tu mets ou récupère les données. Généralement ces 2 adresses sont consécutives. Pour gagner du temps, on peut faire une seule écriture 32 bits qui écrit l'index et les données, mais ça ne marche correctement que si c'est l'adresse d'index qui est écrite en premier.

Et à supposer qu'il n'y ait pas de latence à la modification de l'index au niveau dudit périphérique externe aussi, non ?
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

43

Exact. C'est en général le cas, mais il y a des exceptions.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo