Lors de la conception du 80286, les concepteurs du CPU d'Intel ont décidé d'ajouter deux instructions pour aider à maintenir les affichages.
Voici le micro code à l'intérieur de l'unité centrale :
; ENTER Locals, LexLevel
push bp ;Save dynamic link.
mov tempreg, sp ;Save for later.
cmp LexLevel, 0 ;Done if this is lex level zero.
je Lex0
lp:
dec LexLevel
jz Done ;Quit if at last lex level.
sub bp, 2 ;Index into display in prev act rec
push [bp] ; and push each element there.
jmp lp ;Repeat for each entry.
Done:
push tempreg ;Add entry for current lex level.
Lex0:
mov bp, tempreg ;Ptr to current act rec.
sub sp, Locals ;Allocate local storage
L'alternative à ENTER serait :
; entrer n, 0 ;14 cycles sur le 486
push bp ;1 cycle on the 486
sub sp, n ;1 cycle on the 486
; entrer n, 1 ;17 cycles sur le 486
push bp ;1 cycle on the 486
push [bp-2] ;4 cycles on the 486
mov bp, sp ;1 cycle on the 486
add bp, 2 ;1 cycle on the 486
sub sp, n ;1 cycle on the 486
; entrer n, 3 ;23 cycles sur le 486
push bp ;1 cycle on the 486
push [bp-2] ;4 cycles on the 486
push [bp-4] ;4 cycles on the 486
push [bp-6] ;4 cycles on the 486
mov bp, sp ;1 cycle on the 486
add bp, 6 ;1 cycle on the 486
sub sp, n ;1 cycle on the 486
Ect. La méthode longue peut augmenter la taille de votre fichier, mais elle est beaucoup plus rapide.
Pour finir, les programmeurs n'utilisent plus vraiment l'affichage depuis qu'il s'agissait d'une solution de contournement très lente, rendant ENTER plutôt inutile maintenant.
Fuente: https://courses.engr.illinois.edu/ece390/books/artofasm/CH12/CH12-3.html
0 votes
stackoverflow.com/questions/5474355/