From 6f450eb2252aabb90b1ce3cbbfa5de6ba79bd23b Mon Sep 17 00:00:00 2001 From: Pierre Cwik Date: Mon, 23 May 2016 17:55:34 +0200 Subject: [PATCH] ajout 23 mai --- liens/constante | Bin 0 -> 528 bytes liens/constante.c | 13 +++++++++++++ liens/constante.o | Bin 0 -> 1088 bytes liens/globale | Bin 0 -> 408 bytes liens/globale.c | 9 +++++++++ liens/globale.o | Bin 0 -> 976 bytes liens/liens.txt | 119 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ liens/minimal | Bin 0 -> 408 bytes liens/minimal.c | 5 +++++ liens/minimal.o | Bin 0 -> 848 bytes liens/simple.c | 7 +++++++ liens/statique | Bin 0 -> 536 bytes liens/statique.c | 11 +++++++++++ liens/statique.o | Bin 0 -> 984 bytes 14 files changed, 164 insertions(+), 0 deletions(-) create mode 100755 liens/constante create mode 100644 liens/constante.c create mode 100644 liens/constante.o create mode 100755 liens/globale create mode 100644 liens/globale.c create mode 100644 liens/globale.o create mode 100644 liens/liens.txt create mode 100755 liens/minimal create mode 100644 liens/minimal.c create mode 100644 liens/minimal.o create mode 100644 liens/simple.c create mode 100755 liens/statique create mode 100644 liens/statique.c create mode 100644 liens/statique.o diff --git a/liens/constante b/liens/constante new file mode 100755 index 0000000..eef748b Binary files /dev/null and b/liens/constante differ diff --git a/liens/constante.c b/liens/constante.c new file mode 100644 index 0000000..6144ea2 --- /dev/null +++ b/liens/constante.c @@ -0,0 +1,13 @@ + +void _start(void) +{ + +char *chaine = "salut"; +int i=0; + +while(chaine[i] != '\0') { i++; } + +__asm__ volatile("syscall" :: "a" (60), "D" (i) ); + + +} \ No newline at end of file diff --git a/liens/constante.o b/liens/constante.o new file mode 100644 index 0000000..abbbfa6 Binary files /dev/null and b/liens/constante.o differ diff --git a/liens/globale b/liens/globale new file mode 100755 index 0000000..3e432e0 Binary files /dev/null and b/liens/globale differ diff --git a/liens/globale.c b/liens/globale.c new file mode 100644 index 0000000..84d5e75 --- /dev/null +++ b/liens/globale.c @@ -0,0 +1,9 @@ +int j=42; + +void _start(void) +{ + +__asm__ volatile("syscall" :: "a" (60), "D" (j) ); + + +} \ No newline at end of file diff --git a/liens/globale.o b/liens/globale.o new file mode 100644 index 0000000..2dfbfc4 Binary files /dev/null and b/liens/globale.o differ diff --git a/liens/liens.txt b/liens/liens.txt new file mode 100644 index 0000000..c37d731 --- /dev/null +++ b/liens/liens.txt @@ -0,0 +1,119 @@ + + +////////////////////////////////// exercice : piste noire /////////////////////////////////// + +en assembleur cela fonctionne __asm__ volatile("syscall" :: "a" (60), "D" (42) ); + +Avec readelf on voit qu'on utilise pas de bibliotheque et il n'utilise que 6 sections + +pcwik@gambrinus14:~/Desktop/pierrotc/liens$ ldd minimal + not a dynamic executable + + + +//////////////////////////////////// exercice "épilogue" ////////////////////////////// + + +l'executable n'a plus que 2 sections + +Section Headers: + [Nr] Name Type Address Offset + Size EntSize Flags Link Info Align + [ 0] NULL 0000000000000000 00000000 + 0000000000000000 0000000000000000 0 0 0 + [ 1] .text PROGBITS 00000000004000b0 000000b0 + 0000000000000014 0000000000000000 AX 0 0 1 + [ 2] .shstrtab STRTAB 0000000000000000 000000c4 + 0000000000000011 0000000000000000 0 0 1 + + + +EDITION DES LIENS 2/5 + +/////////////////////////////////// Exercice "segment pour constante" /////////////////////////////////////:: + + +void _start(void) +{ + +char *chaine = "salut"; +int i=0; + +while(chaine[i] != '\0') { i++; } + +__asm__ volatile("syscall" :: "a" (60), "D" (i) ); + + +} + +AVEC LE PROGRAMME CI DESSUS j'OBTIENT LES SECTIONS CI DESSOUS : + +Section Headers: + [Nr] Name Type Address Offset + Size EntSize Flags Link Info Align + [ 0] NULL 0000000000000000 00000000 + 0000000000000000 0000000000000000 0 0 0 + [ 1] .text PROGBITS 00000000004000b0 000000b0 + 000000000000003b 0000000000000000 AX 0 0 1 + [ 2] .rodata PROGBITS 00000000004000eb 000000eb + 0000000000000006 0000000000000000 A 0 0 1 + [ 3] .shstrtab STRTAB 0000000000000000 000000f1 + 0000000000000019 0000000000000000 0 0 1 + + +//////////////////////////////////////////////////Exercice "segment pour variable globale initialisée" //////////////////////////////// + + +int j = 42; + +void _start(void) +{ + +__asm__ volatile("syscall" :: "a" (60), "D" (j) ); + + +} + +Section Headers: + [Nr] Name Type Address Offset + Size EntSize Flags Link Info Align + [ 0] NULL 0000000000000000 00000000 + 0000000000000000 0000000000000000 0 0 0 + [ 1] .text PROGBITS 00000000004000b0 000000b0 + 0000000000000014 0000000000000000 AX 0 0 1 + [ 2] .shstrtab STRTAB 0000000000000000 000000c4 + 0000000000000011 0000000000000000 0 0 1 + + +///////////////////////////////////////////////////:: STATIQUE ///////////////////////////////////////////////////:: + +void _start(void) + +{ + +static int i; + +__asm__ volatile("syscall" :: "a" (60), "D" (i) ); + + +} + + + +Section Headers: + [Nr] Name Type Address Offset + Size EntSize Flags Link Info Align + [ 0] NULL 0000000000000000 00000000 + 0000000000000000 0000000000000000 0 0 0 + [ 1] .text PROGBITS 00000000004000e8 000000e8 + 0000000000000015 0000000000000000 AX 0 0 1 + [ 2] .bss NOBITS 0000000000600100 00000100 + 0000000000000008 0000000000000000 WA 0 0 4 + [ 3] .shstrtab STRTAB 0000000000000000 000000fd + 0000000000000016 0000000000000000 0 0 1 + + + + + + diff --git a/liens/minimal b/liens/minimal new file mode 100755 index 0000000..3e432e0 Binary files /dev/null and b/liens/minimal differ diff --git a/liens/minimal.c b/liens/minimal.c new file mode 100644 index 0000000..283bb5f --- /dev/null +++ b/liens/minimal.c @@ -0,0 +1,5 @@ +void _start(void) +{ +__asm__ volatile("syscall" :: "a" (60), "D" (42) ); +} + diff --git a/liens/minimal.o b/liens/minimal.o new file mode 100644 index 0000000..978f736 Binary files /dev/null and b/liens/minimal.o differ diff --git a/liens/simple.c b/liens/simple.c new file mode 100644 index 0000000..9e6fe55 --- /dev/null +++ b/liens/simple.c @@ -0,0 +1,7 @@ +#include + +int main(void) +{ +printf("j'ai MENTI\n"); +return 0; +} diff --git a/liens/statique b/liens/statique new file mode 100755 index 0000000..4bc8941 Binary files /dev/null and b/liens/statique differ diff --git a/liens/statique.c b/liens/statique.c new file mode 100644 index 0000000..6978e25 --- /dev/null +++ b/liens/statique.c @@ -0,0 +1,11 @@ + +void _start(void) + +{ + +static int i; + +__asm__ volatile("syscall" :: "a" (60), "D" (i) ); + + +} \ No newline at end of file diff --git a/liens/statique.o b/liens/statique.o new file mode 100644 index 0000000..5fb4103 Binary files /dev/null and b/liens/statique.o differ -- libgit2 0.21.2