Additions:
%%(c;.gdbinit)
Additions:
~- ##cont##: completa l'esecuzione del programma
Deletions:
~- ##cont##: esegue il resto del programma
Additions:
Prima di iniziare l'esercitazione, creare un file con nome "##.gdbinit##" nella directory ##/home/biar## (nella VM BIAR) con il seguente contenuto:
Deletions:
Prima di iniziare l'esercitazione, creare un file ##.gdbinit## nella directory ##/home/biar## (nella VM BIAR) con il seguente contenuto:
Additions:
~- ##i r reg1 reg2 ...##: mostra il contenuto dei registri ##reg1##, ##reg2##, ecc, sia in base 16 che in base 10. Esempio: ##i r $eax $ecx##.
Deletions:
~- ##i r reg##: mostra il contenuto
Additions:
che consente di dare il comando ##go## per fare il debugging di un programma C/IA32. Per debuggare un programma ##mioprog##, dare ##gdb ./mioprog## e poi il comando ##go##. Riepilogo dei comandi:
~- ##go##: esegue uno script che lancia il debugging del programma e si ferma sulla prima istruzione del main
~- ##step## (oppure s): esegue una singola istruzione, entrando nelle funzioni chiamate
~- ##next## (oppure n): esegue una singola istruzione, considerando le chiamate a funzione come singole istruzioni
~- ##finish##: completa l'esecuzione della funzione corrente
~- ##cont##: esegue il resto del programma
~- ##x/d addr##: mostra il contenuto dell'int all'indirizzo addr. Esempio: ##x/d $esp + 4## mostra l'intero all'indirizzo ##4(%esp)##.
~- ##i r reg##: mostra il contenuto
Deletions:
che consente di dare il comando ##go## per fare il debugging di un programma C/IA32. Per debuggare un programma ##mioprog##, dare ##gdb ./mioprog## e poi il comando ##go##.
Additions:
Prima di iniziare l'esercitazione, creare un file ##.gdbinit## nella directory ##/home/biar## (nella VM BIAR) con il seguente contenuto:
che consente di dare il comando ##go## per fare il debugging di un programma C/IA32. Per debuggare un programma ##mioprog##, dare ##gdb ./mioprog## e poi il comando ##go##.
Deletions:
Prima di iniziare l'esercitazione, creare un file ##.gdbinit## nella directory ##/home/biar## con il seguente contenuto:
che consente di dare il comando ##go## per fare il debugging di un programma C/IA32.
Additions:
==Preliminari==
Prima di iniziare l'esercitazione, creare un file ##.gdbinit## nella directory ##/home/biar## con il seguente contenuto:
define go
start
layout src
layout regs
focus cmd
end
che consente di dare il comando ##go## per fare il debugging di un programma C/IA32.
==Osservazione sulle istruzioni IA32==
Si tenga presente che:
~- non è possibile usare due operandi memoria: ad esempio ##cmpb (%eax), (%ecx)## è illegale.
~- non è possibile usare un operando immediato per la destinazione: ad esempio ##cmpl %eax, $0## è illegale.
Deletions:
** Osservazione. ** si tenga presente che:
- non è possibile usare due operandi memoria: ad esempio ##cmpb (%eax), (%ecx)## è illegale.
- non è possibile usare un operando immediato per la destinazione: ad esempio ##cmpl %eax, $0## è illegale.
Additions:
- non è possibile usare un operando immediato per la destinazione: ad esempio ##cmpl %eax, $0## è illegale.
Deletions:
- non è possibile usare un operando immediato per la destinazione: ad esempio ##cmpl (%eax), $0## è illegale.
Additions:
- non è possibile usare un operando immediato per la destinazione: ad esempio ##cmpl (%eax), $0## è illegale.
Deletions:
- non è possibile usare un operando immediato per la destinazione: ad esempio ##cmpb %eax, $0## è illegale.
Additions:
** Osservazione. ** si tenga presente che:
- non è possibile usare due operandi memoria: ad esempio ##cmpb (%eax), (%ecx)## è illegale.
- non è possibile usare un operando immediato per la destinazione: ad esempio ##cmpb %eax, $0## è illegale.
Deletions:
Si tenga presente che non è possibile usare due operandi memoria: ad esempio ##cmpb (%eax), (%ecx)## è illegale. Testare il funzionamento della funzione scritta con il seguente programma di prova:
Additions:
**Nota bene:** compilare a 32 bit con ##gcc -m32 -g## (##gcc -m32 -g es1-main.c es1.s -o es1##).
**Nota bene:** compilare a 32 bit con ##gcc -m32 -g##.
**Nota bene:** compilare a 32 bit con ##gcc -m32 -g##.
**Nota bene:** compilare a 32 bit con ##gcc -m32 -g##.
Deletions:
**Nota bene:** compilare a 32 bit con ##gcc -m32## (##gcc -m32 es1-main.c es1.s -o es1##).
**Nota bene:** compilare a 32 bit con ##gcc -m32##.
**Nota bene:** compilare a 32 bit con ##gcc -m32##.
**Nota bene:** compilare a 32 bit con ##gcc -m32##.
Additions:
int res, a=20, b=10;
res = max(&a,&b);
printf("max(&a,&b)=%-3d [a=%-3d, b=%-3d]\n", res, a, b);
a = -10; b = 1;
res = max(&a,&b);
printf("max(&a,&b)=%-3d [a=%-3d, b=%-3d]\n", res, a, b);
Deletions:
int res, xx=20, yy=10;
res = max(&xx,&yy);
printf("max(&xx,&yy)=%-3d [xx=%-3d, yy=%-3d]\n", res, xx, yy);
xx = -10; yy = 1;
res = max(&xx,&yy);
printf("max(&xx,&yy)=%-3d [xx=%-3d, yy=%-3d]\n", res, xx, yy);
Additions:
===Esercitazione 2 - 21 ottobre 2016 (120 min)===
Deletions:
===Esercitazione 2 - 21 ottobre 2016 (150 min)===
Additions:
res = streq("", "");
Deletions:
res = streq(" ", " ");
Deletions:
TBA
""""
Additions:
res = streq(" ", " ");
Deletions:
res = streq("", "");
Additions:
TBA
""""