Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 内存重新排序示例_C_Linux_Gcc_Assembly_X86 - Fatal编程技术网

C 内存重新排序示例

C 内存重新排序示例,c,linux,gcc,assembly,x86,C,Linux,Gcc,Assembly,X86,我试图找出一个内存重新排序的示例,以便演示barrier(asmvolatile(“”:“:”内存”)的使用 我从一个stackoverflow问题复制了代码,并使用gcc-O3标志编译了它。 #包括 int c(int*d,int*e){ INTR; d[0]+=1; r=e[0]; d[1]+=1; 返回r; } int main() { int arr[2]={0x00,0x01}; int e[2]={0x1,0x2}; c(arr,e); printf(“arr[0]:%d\t ar

我试图找出一个内存重新排序的示例,以便演示barrier(asmvolatile(“”:“:”内存”)的使用

我从一个stackoverflow问题复制了代码,并使用gcc-O3标志编译了它。

#包括
int c(int*d,int*e){
INTR;
d[0]+=1;
r=e[0];
d[1]+=1;
返回r;
}
int main()
{
int arr[2]={0x00,0x01};
int e[2]={0x1,0x2};
c(arr,e);
printf(“arr[0]:%d\t arr[1]:%d\n”,arr[0],arr[1]);
printf(“e[0]:%d\t e[1]:%d\n”,e[0],e[1]);
返回0;
}
$objdump-D

00000000000006c0 <c>:
 6c0:   83 07 01                addl   $0x1,(%rdi)
 6c3:   8b 06                   mov    (%rsi),%eax
 6c5:   83 47 04 01             addl   $0x1,0x4(%rdi)
 6c9:   c3                      retq   
 6ca:   66 0f 1f 44 00 00       nopw   0x0(%rax,%rax,1)
0000000000000 6c0:
6c0:83 07 01添加$0x1,(%rdi)
6c3:8b 06 mov(%rsi),%eax
6c5:83 47 04 01添加$0x1,0x4(%rdi)
6c9:c3 retq
6ca:66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1)
按照这里的顺序。是否有任何代码可以实际演示内存的重新排序操作。

这样可以吗?
00000000000006c0 <c>:
 6c0:   83 07 01                addl   $0x1,(%rdi)
 6c3:   8b 06                   mov    (%rsi),%eax
 6c5:   83 47 04 01             addl   $0x1,0x4(%rdi)
 6c9:   c3                      retq   
 6ca:   66 0f 1f 44 00 00       nopw   0x0(%rax,%rax,1)