Files
ldc/tangotests/asm7.d
Tomas Lindquist Olsen 03d26e1178 [svn r326] Fixed a bunch of issues with printf's that MinGW32 did not support.
Fixed problems with label collisions when using labels inside inline asm. LabelStatement is now easily reached given its
Identifier, which should be useful elsewhere too.
Enabled inline asm for building the lib/compiler/llvmdc runtime code, fixing branches out of asm makes this possible.
2008-06-27 22:04:35 +02:00

42 lines
593 B
D

module tangotests.asm7;
// test massive label collisions (runtime uses Loverflow too)
void main()
{
int a = add(1,2);
int s = sub(1,2);
assert(a == 3);
assert(s == -1);
}
int add(int a, int b)
{
int res;
asm
{
mov EAX, a;
add EAX, b;
jo Loverflow;
mov res, EAX;
}
return res;
Loverflow:
assert(0, "add overflow");
}
int sub(int a, int b)
{
int res;
asm
{
mov EAX, a;
sub EAX, b;
jo Loverflow;
mov res, EAX;
}
return res;
Loverflow:
assert(0, "sub overflow");
}