On 08-03-2012 10:42, Denis Shelomovskij wrote:
1. Is there any guaranties that no code will be added between sequential
inline assembler blocks, e.g.:
---
void f()
{
static if(x)
asm { mov EBX, 3; }
else
asm { mov EBX, 7; }
asm { mov EAX, EBX; } // Is EBX value defined here?
}
I don't think you can rely on this.
---
Is it documented?
Probably not.
2. Such question about return via EAX (is the following use
legal/documented):
---
int g()
{
asm { mov EAX, 4; }
}
---
Such use of `asm` to return a value is used here and there in
http://dlang.org/iasm.html
As long as you follow whatever ABI your function uses (cdecl, stdcall,
the D ABI, whatever), I don't see anything wrong with this.
--
- Alex