I have discovered a bit more. I saw people using gdb to debug their
programs so I decided to try too.
Some info: My comp is Intel core i3 64-bit architecture. So, apart from
what the book has taught, some googling showed me that longs and pointers
in this are 8 bytes long.
So, anyway, the problem I identified by running steps in gdb was *in the
conversion between esp and ebp. *I don't know why, but for some reason, the
value moved is different. Stripped, if I may say. Check this out:
from gdb,
Before executing movl %esp, %ebp : %esp has the value 0x7fffffffdf30   (esp
is called rsp on mine) and ebp has the value 0x0.
After, %esp has the value 0x7fffffffdf30   (%esp is called %rsp on mine)
and ebp has the value 0xffffdf30. That 7 is not carried over for some
reason.
After doing the reverse, movl %ebp, %esp , both %ebp and %esp end up with
the value 0xffffdf30. So, the initial value is not restored.
Trying to execute the next step gives a segmentation fault since clearly I
am trying to access memory in an address that may well be outside assigned
memory.
Any help?


On 11 January 2014 12:20, George Nyoro <[email protected]> wrote:

> Hey again,
> Sorry for the barrage of questions.
> I am now trying function power. But I am getting segmentation faults with
> my own code and couldn't trace the error so I tried to reduce it till I
> could locate it.
> The reduced format is this:
>
> .code32
> .section .data
> .section .text
> .globl _start
>
> _start:
>     pushl $3
>     pushl $2
>     call power
>     movl %eax, %ebx
>     addl $8, %esp
>     movl $1, %eax
>     int $0x80
>
> .type power,@function
> power:
> pushl %ebp
> movl %esp, %ebp
>
> *movl %ebp, %esp*
> popl %ebp
> movl $5, %eax
> ret
>
>
> When I remove the line *in bold*, it compiles alright and gives me the
> right result but when I include the offending line, it gives me an error of
> segmentation fault. Why does this happen? Does it mean my processor does
> not allow one to directly manipulate the %esp value?
> Thanks again.
>
_______________________________________________
Pgubook-readers mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/pgubook-readers

Reply via email to