↑ ↓ ← → Manfred Hansen <m.hansen kielnet.net>
writes:
Content-Type: text/plain; charset=iso-8859-9
Content-Transfer-Encoding: 8Bit
void main()
{
int myint = 1234;
const(char*) mystring = "This number -> %d <- should be 1234\n";
asm
{
push dword ptr myint ; // pointer to the integer variable
declared in D
push dword ptr mystring ; // pointer into the C-style string
declared in D
call printf ; // call the printf function
}
}
This programm run with dmd 2.007 but not with gdc based on version 2.005 .
My Compiler is gcc.4.1.2 under linux.
The output:
manni manni-lx:~/dd/ass$ ./asm
This number -> 1234 <- should be 1234
Speicherzugriffsfehler (core dumped)
I believe the core dump has to with the line
const(char*) mystring ...
manni
↑ ↓ ← → Manfred Hansen <m.hansen kielnet.net>
writes:
Manfred Hansen wrote:
void main()
{
int myint = 1234;
const(char*) mystring = "This number -> %d <- should be 1234\n";
asm
{
push dword ptr myint ; // pointer to the integer
variable
declared in D
push dword ptr mystring ; // pointer into the C-style
string
declared in D
call printf ; // call the printf function
}
}
This programm run with dmd 2.007 but not with gdc based on version 2.005 .
My Compiler is gcc.4.1.2 under linux.
The output:
manni manni-lx:~/dd/ass$ ./asm
This number -> 1234 <- should be 1234
Speicherzugriffsfehler (core dumped)
I believe the core dump has to with the line
const(char*) mystring ...
manni
Hello,
i make my programm a little bit smaller to get a
segmentation fault.
void main()
{
int myint = 1234;
asm
{
push dword ptr myint;
}
}
I have tested the programm under Debian/Sidux and Kubuntu feisty.
Can someone reproduce the error, maybe the problem is not the
gdc compiler, it's my operating system ?
manni
↑ ↓ ← → David Friedman <dvdfrdmn users.ess-eff.net>
writes:
Manfred Hansen wrote:
Manfred Hansen wrote:
void main()
{
int myint = 1234;
const(char*) mystring = "This number -> %d <- should be 1234\n";
asm
{
push dword ptr myint ; // pointer to the integer
variable
declared in D
push dword ptr mystring ; // pointer into the C-style
string
declared in D
call printf ; // call the printf function
}
}
This programm run with dmd 2.007 but not with gdc based on version 2.005 .
My Compiler is gcc.4.1.2 under linux.
The output:
manni manni-lx:~/dd/ass$ ./asm
This number -> 1234 <- should be 1234
Speicherzugriffsfehler (core dumped)
I believe the core dump has to with the line
const(char*) mystring ...
manni
Hello,
i make my programm a little bit smaller to get a
segmentation fault.
void main()
{
int myint = 1234;
asm
{
push dword ptr myint;
}
}
I have tested the programm under Debian/Sidux and Kubuntu feisty.
Can someone reproduce the error, maybe the problem is not the
gdc compiler, it's my operating system ?
manni
GCC puts special stack alignment code in the main function so you cannot
leave the stack unbalanced. You could either restore the stack to the
state it was in before the asm block or you could put the asm in another
function.
David