BUT2/SCR/SCR1.2/TP16-ARM/reponse.txt

99 lines
2.3 KiB
Plaintext
Raw Permalink Normal View History

2023-10-23 13:23:36 +02:00
|----------------|
|IMPORTANT: |
|ssh 172.16.3.173|
|----------------|
1) uname -a
système d'exploitation = 64 bits
2)lscpu
architecture = x86_64
3)
as -gstabs -o exe.o test.s
ld -O0 -o exe exe.o
./exe
file exe
l <nb1>-<nb2> = affiche les lignes de code de n1 à n2
i r <registre> = information
X /<type> <adresse> = examine
<type=s> = string
[s / step] = suivant
<type=14cb> = décomposition du string
b <numLigne> = breakpoint
----------------------------------------
adr <addresse>,<variable> = met une variable dans une addresse
ldr <registre>,[<valeur>] = load (charge dans un registre la valeur stocké dans une adresse)
str <registre>,[<valeur>] = store (décharge la valeur stocké dans un registre à une adresse)
sxtw <registreDest> <registreSrc> = Sign eXTend Word (étend le bit de signe dans à la destination dans le registre d'origine)
sxts --> 64 bits
sxtw --> 32 bits
sxth --> 16 bits
sxtb --> 8 bits
uxt? --> Unsigned eXTend *
xzr = 0
add <dest><nb1><nb2> = met le resultat de nb1 et nb2 dans dest
adds .. = parreille sauf que ça met à jour les flags NZCV
flags:
N = négatif
Z = si résultat nul
V = en cas de débordement
C = retenus sortante
nrs x4, nzcv = met dans x4 les flags nzcv
lsl = logical shift left (décale les bit vers la gauche (multiplie))
lsr = logical shift left (décale les bit vers la droite (divise))
asr = (décalage à droite, plus met le bit de signe sur les bits libérer à gauche)
ont peut faire une addition et un décalage en une seul opération.
ex: add x1,x0,x0,lsl #4
=> x0 + x0*2**4
=> x0 + 16*x0
=> 17*x0
ex:sub x1,xzr,x2,lsl #3
=> 0 - x2*2**3
=> -8*x2
Les registre vont de 1 à 12 (et ont une lettre devant x,w,h,b)
objdump -d exe => traduit l'exécutable en language machine (chaque instruction à un codage binaire)
ex: 8b001001 add x1, x0, x0, lsl #4
Une instruction est donc codé sur 32 bits "8b001001"
codage:
add <rd><rn><rm>{, <shift> #<amount>}
ex: add w1,w4,w7,asr #8
0<sf si l'opération se dait sur 64 bits, 0 si elle se fait sur 32>
0001011<add>
00<shift ex:lsl/lsr>
0<toujours 0>
00111<rm>
001000<amount>
00100<Rn>
00001<Rd>
---------------------------------------------------------------------------
TP19
--------------------------------------------------------------------------
test:
gt >
ge >=
lt <
le <=
eq ==
ne !=