oh nice ... In my kernel I am running into an issue where I am looping
though an &str but it does not get the right characters (all zeros
actually) - https://github.com/ckkashyap/unix/blob/master/kernel/uart.rs

While I've used the PIC option several times, I had not realized that rip
relative addressing is how it's done :) Thanks for the pointer.

Now I need to find out what the problem is in my kernel code ...

Thanks Daniel.

Regards,
Kashyap


On Wed, Dec 10, 2014 at 9:21 AM, Daniel Micay <[email protected]> wrote:

> On 09/12/14 10:43 PM, C K Kashyap wrote:
> > Hi,
> >
> > Looks like on my ubuntu 64 bit, when I compile
> >
> >    hello("ABCD");
> >
> > I get
> >
> >     719e:       48 8d 05 e0 68 04 00    lea    0x468e0(%rip),%rax
> >  # 4da85 <str1405>
> >     71a5:       48 89 44 24 08             mov    %rax,0x8(%rsp)
> >     71aa:       48 c7 44 24 10 04 00    movq   $0x4,0x10(%rsp)
> >     71b1:       00 00
> >     71b3:       e8 88 f6 ff ff                 callq  6840
> > <_ZN5hello20h8ed5f876da0c3862eaaE>
> >
> >
> > I was wondering why is %rip being used for getting to the string? Or am
> > I understanding it incorrectly?
> >
> > Regards,
> > Kashyap
>
> That's what position independent code looks like on x86_64.
>
> https://en.wikipedia.org/wiki/Position-independent_code
>
>
> _______________________________________________
> Rust-dev mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/rust-dev
>
>
_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to