Re: [Sdcc-user] Question about genCall

2014-10-02 Thread Sebastien Lorquet
Hello, On the PC ASLR will reduce the interest of calling function by direct litteral address. But, for example, if you know for sure that the libc is loaded at address X and the function you want has offset Y within this lib, you could certainly call that function directly using this syntax. --

Re: [Sdcc-user] Question about genCall

2014-10-02 Thread remi
At my knowledge, it exists on PC with DOS now with linux and windows I am not sure but it must be too, like for getting time and date ... also drivers may make this calls, to bios functions in the chipset of a scsi card for example ... Le 2014-10-02 13:28, 陳韋任 a écrit : >> Well, you know if

Re: [Sdcc-user] Question about genCall

2014-10-02 Thread Maarten Brock
>> Well, you know if you or someone else put it there. This is common for >> BIOS-like library functions that are already present in the memory. > > Thanks for your explanation. I have no experience on using BIOS-like > library, but I guess what you mean is some kind of library that > preloaded i

Re: [Sdcc-user] Question about genCall

2014-10-02 Thread Wei-Ren Chen
> Well, you know if you or someone else put it there. This is common for > BIOS-like library functions that are already present in the memory. Thanks for your explanation. I have no experience on using BIOS-like library, but I guess what you mean is some kind of library that preloaded into memor

Re: [Sdcc-user] Question about genCall

2014-10-02 Thread Maarten Brock
>> I didn't check, but how about >> >> ((void (*)(void))(0x1234))(); > > Yes, you are right. But I don't know calling function (address) in such way. > How would you know that some function like "foo" is located at 0x1234? Well, you know if you or someone else put it there. This is common for BIOS

Re: [Sdcc-user] Question about genCall

2014-10-02 Thread Wei-Ren Chen
> I didn't check, but how about > > ((void (*)(void))(0x1234))(); Yes, you are right. But I don't know calling function (address) in such way. How would you know that some function like "foo" is located at 0x1234? And Ben, I found I was wrong. Not only hc08 has such logic, stm8, for example,

Re: [Sdcc-user] Question about genCall

2014-10-01 Thread Philipp Klaus Krause
On 02.10.2014 03:48, 陳韋任 (Wei-Ren Chen) wrote: > Hi All, > > I have a question about genCall while tracing the codegen. The code > snippet below: > > /* make the call */ > if (IS_LITERAL (etype)) > { > /* ??? */ > } > else > { > /* docall(); */ > } > > I can

Re: [Sdcc-user] Question about genCall

2014-10-01 Thread Wei-Ren Chen
On Thu, Oct 02, 2014 at 11:12:08AM +0800, Ben Shi wrote: > > which port? > Oops, I thought that every port's genCall shoule be nearly the same, but apparently not. I am looing into hc08 port. Is that genCall logic specific to hc08? BR, chenwj -- Wei-Ren Chen (陳韋任) Homepage: http://people

Re: [Sdcc-user] Question about genCall

2014-10-01 Thread Ben Shi
which port? -- 发自我的网易邮箱手机智能版 在 2014-10-02 09:48:57,"陳韋任 (Wei-Ren Chen)" 写道: >Hi All, > > I have a question about genCall while tracing the codegen. The code >snippet below: > > /* make the call */ > if (IS_LITERAL (etype)) >{ > /* ??? */ >} > else >{ > /* docall();

[Sdcc-user] Question about genCall

2014-10-01 Thread Wei-Ren Chen
Hi All, I have a question about genCall while tracing the codegen. The code snippet below: /* make the call */ if (IS_LITERAL (etype)) { /* ??? */ } else { /* docall(); */ } I can't figure out under what kind of function call will go through the if-stmt part