diff --git a/related_info/lab1/lab1-ex2.c b/related_info/lab1/lab1-ex2.c new file mode 100755 index 0000000..2f87a8b --- /dev/null +++ b/related_info/lab1/lab1-ex2.c @@ -0,0 +1,40 @@ +#include + +void A(); +void B(int a, int b, int c); + +int main() +{ + A(); + return 0; +} + +void A() +{ + unsigned int a = 1; + unsigned int b = 2; + unsigned int c = 3; + B(a,b,c); +} + + +void B(int d, int e, int f) +{ + int g; + unsigned int _ebp; + __asm__( + "movl %%ebp,%0\n\t" \ + :"=r" (_ebp)); + g=4; + + printf(" [ebp-12] --?? = %p --- %d \n [ebp-08] --?? = %p --- %d \n [ebp-04] --?? = %p --- %d \n [ebp+00] -oebp= %p --- %p \n [ebp+04] -ret = %p --- %p \n [ebp+08] -- d = %p --- %d \n [ebp+12] -- e = %p --- %d \n [ebp+16] -- f = %p --- %d \n ", + (unsigned *)(_ebp-12), *(unsigned *)(_ebp-12), + (unsigned *)(_ebp-8), *(unsigned *)(_ebp-8), + (unsigned *)(_ebp-4), *(unsigned *)(_ebp-4), + (unsigned *)(_ebp), *(unsigned *)(_ebp), + (unsigned *)(_ebp+4), *(unsigned *)(_ebp+4), + (unsigned *)(_ebp+8), *(unsigned *)(_ebp+8), + (unsigned *)(_ebp+12), *(unsigned *)(_ebp+12), + (unsigned *)(_ebp+16), *(unsigned *)(_ebp+16)); + +} diff --git a/related_info/lab1/lab1-ex2.md b/related_info/lab1/lab1-ex2.md new file mode 100644 index 0000000..e25c7ee --- /dev/null +++ b/related_info/lab1/lab1-ex2.md @@ -0,0 +1,8 @@ +# lab1-ex2 +Try below command (stack) + +``` +gcc -m32 -o lab1-ex2.exe lab1-ex2.c +``` + +Try to analysis the means of these output log.