3 c assembly segmentation-fault
感谢你们的帮助,我得到了我的小内联汇编程序几乎就在我想要的地方.然而,现在似乎发生了一些与rdtsc命令非常奇怪的事情; 基本上,我在调用它时会出现分段错误.
int timings[64*N];
int main(void)
{
int i;
__asm__ __volatile__ (
"lea edx, [timings] \n\t"
"rdtsc \n\t"
".rept 32 \n\t"
"mov eax,[edx] \n\t"
"inc eax \n\t"
"mov dword ptr [edx], eax \n\t"
"add edx, 4 \n\t"
".endr \n\t"
:
: [timings] "m" (*timings)
);
for(i=0; i<32; i++)
printf("%d\n", timings[i]);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
离开rdtsc,然后程序编译,它做它应该做的事情.但添加rdtsc行会导致分段错误.我在双核机器上运行这些东西并用于编译:gcc -masm = intel test.c
帮助将不胜感激!
rdtsc覆盖eax和edx打勾计数器的部分.既然你装(lea)的地址timings到edx前面rdtsc弄乱了你的程序运作.您既可以移动rdtsc上的命令链,或使用比其他寄存器eax和edx你的程序运作.
| 归档时间: |
|
| 查看次数: |
1931 次 |
| 最近记录: |