digitalmars.D.learn - Interact with local variables in asm block
- confuzzled (18/18) Jul 04 Good day all,
- confuzzled (12/25) Jul 04 Got it:
Good day all,
What is the proper way to assign to accomplish this?
ulong rdtsc() {
ulong result;
uint* res = cast(uint*) &result;
asm {
rdtsc; // Puts result in edx:eax
// Cast our ulong's address to a 32-bit integer pointer
// and move the register values into the correct memory locations.
mov EAX, res[0]; // Low 32 bits
mov EDX, res[1]; // High 32 bits
}
return result;
}
With this implementation, the value returned is always 0.00.
I would appreciate any help I can get.
Thanks,
-- confuzzled
Jul 04
On 7/5/25 1:06 AM, confuzzled wrote:
ulong rdtsc() {
ulong result;
uint* res = cast(uint*) &result;
asm {
rdtsc; // Puts result in edx:eax
// Cast our ulong's address to a 32-bit integer pointer
// and move the register values into the correct memory
locations.
mov EAX, res[0]; // Low 32 bits
mov EDX, res[1]; // High 32 bits
}
return result;
}
Got it:
ulong rdtsc() {
ulong result;
asm {
rdtsc; // Puts result in edx:eax
mov [result], EAX; // Low 32 bits
mov [result + 4], EDX; // High 32 bits
}
return result;
}
Thanks.
Jul 04








confuzzled <con fuzzled.com>