Mercurial > projects > dstress
changeset 1024:adf31c7a5127
Inline Assembler offset keyword
<lugaidster@gmail.com>
2006-04-28
news:bug-116-3@http.d.puremagic.com/bugzilla/
author | thomask |
---|---|
date | Wed, 24 May 2006 16:23:43 +0000 |
parents | 740c7e3dae39 |
children | 8516fcb66401 |
files | nocompile/a/asm_offset_01_B.d run/a/asm_offset_01_A.d |
diffstat | 2 files changed, 79 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nocompile/a/asm_offset_01_B.d Wed May 24 16:23:43 2006 +0000 @@ -0,0 +1,36 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +// @author@ <lugaidster@gmail.com> +// @date@ 2006-04-28 +// @uri@ news:bug-116-3@http.d.puremagic.com/bugzilla/ + +// __DSTRESS_ELINE__ 26 + +module dstress.nocompile.a.asm_offset_01_B; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + byte b; + + void main(){ + + static if(size_t.sizeof == 4){ + asm{ + mov EAX, offsetof b; + } + }else{ + pragma(msg, "DSTRESS{ERROR}: unsupported pointer size"); + static assert(0); + } + } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_offset_01_A.d Wed May 24 16:23:43 2006 +0000 @@ -0,0 +1,43 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +// @author@ <lugaidster@gmail.com> +// @date@ 2006-04-28 +// @uri@ news:bug-116-3@http.d.puremagic.com/bugzilla/ + +module dstress.run.a.asm_offset_01_A; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + byte b; + + int main(){ + void* x = &b; + void* y; + + static if(size_t.sizeof == 4){ + asm{ + mov EAX, offset b; + mov y, EAX; + } + }else{ + pragma(msg, "DSTRESS{ERROR}: unsupported pointer size"); + static assert(0); + } + + if(x != y){ + assert(0); + } + + return 0; + } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}