J'essaye juste de bidouiller autour de ce qui est le meilleur et le plus court chemin pour décrire deux instructions simples avec le pseudo code C-like. L'instruction extrait est défini comme suit:Pseudo code pour la description de l'instruction
extract rd, rs, imm
Cette instruction extrait l'octet approprié dans le registre de source 32 bits rs et justifie droite dans le registre de destination. L'octet est spécifié par imm et donc peut prendre les valeurs 0 (pour l'octet le moins significatif) et 3 (pour l'octet le plus significatif).
rd = 0x0; // zero-extend result, ie to make sure bits 31 to 8 are set to zero in the result
rd = (rs && (0xff << imm)) >> imm; // this extracts the approriate byte and stores it in rd
L'instruction d'insertion peut être considérée comme l'opération inverse et il faut un octet justifié à droite sur l'endroit du registre de source et le dépose dans l'octet approprié du registre destination rd; encore une fois, cet octet est déterminé par la valeur de imm
tmp = 0x0 XOR (rs << imm)) // shift the byte to the appropriate byte determined by imm
rd = (rd && (0x00 << imm)) // set appropriate byte to zero in rd
rd = rd XOR tmp // XOR the byte into the destination register
Cela ressemble tous un peu horrible, donc je me demande s'il y a un peu une façon plus élégante de décrire ce bahaviour dans le style C comme;)
Un grand merci, Claus
Désolé, mais « pseudo-code C-like » est un oxymore. Toute la raison du pseudo-code est de faire abstraction de l'ordinateur en utilisant la prose et/ou la notation mathématique pour décrire les opérations au lieu de la syntaxe formelle. –