avec l'apparence des langages èvoluès(c,c++,java...)la programmation est devenue facile
et bien pourquoi la programmation en assembleur ?
merieme_info
: avec l'apparence des langages èvoluès(c,c++,java...)la programmation est devenue facile
#define byte_v(x) (char)(x)
#define byte_a(x) (*(char *)(x))
#define byte_ainc(x) (*((char *)(x)++))
#define byte_adec(x) (*(--(char *)(x)))
#define _byte_v byte_v(
#define _byte_a byte_a(
#define _byte_ainc byte_ainc(
#define _byte_adec byte_adec(
#define get_b(x) (_byte_##x))
#define get_w(x) (_word_##x))
#define move_b(x,y) (_byte_##x) = _byte_##y))
#define move_w(x,y) (_word_##x) = _word_##y))
void *f(void *p,void *q) {
move_b(ainc p, v sin(42.3)*rand());
move_b(ainc p, ainc q );
move_w(ainc p, ainc q );
move_w(ainc p, a 0x4c00 );
return p;
}
Code Etat réel Etat émulé
sr=0000 sr=0000
trap #12 trap debugger trap tios
sr=0000 sr=2000
rte privilege violation pas de probleme (le debuggeur émule le rte, en travaillant sur le SR virtuel)
sr=0000 sr=2000 (puisque trap#12)
move sr,d0 pas de probleme pas de probleme
=> d0 devient 0000 => émulation impossible donc d0=0000 alors qu'il devrait valoir 2000
sr=0000 sr=2000
move d0,sr privilege violation pas de probleme, mais le d0 erronné fait que le débuggeur met le SR virtuel à 0
sr=0000 sr=0000
move usp,a0 privilege violation privilege violation (puisque le sr virtuel est à 0)
