1 # include
2
3 int main()
4 {
5 int i = 100;
6 int ret = 0;
7
8 int *p = &i;
9 //ret = *p;
10 __asm__(
11 "ldr %0, [%1]"
12
13 :"+r" (ret) //输出
14 :"r" (p) //输入
15 );
16 printf("hello world! %d\n", ret);
17 }
1 #include
2
3 int main()
4 {
5 int i = 6;
6 int ret = 0;
7
8 //i = 100;
9 __asm__(
10 "mov r0, #100\n"
11 "str r0, [%1]\n"
12 //"ldr r0, [%1]\n"
13
14 : "+r" (ret) //输出
15 : "r" (&i)
16 );
17
18 printf("i %d\n", i);
19 }
1 #include
2
3 int main()
4 {
5 int arr[3] = {0};
6
7 __asm__(
8 "mov r0, #1\n"
9 "str r0, [%0, #0]\n"
10 "add r0, r0, #1\n"
11 "str r0, [%0, #4]\n"
12 "add r0, r0, #1\n"
13 "str r0, [%0, #8]\n"
14
15 : //"+r" (arr) //error
16 : "r" (arr)
17 : "r0"
18 );
19
20 printf("arr[0] %d\n", arr[0]);
21 printf("arr[1] %d\n", arr[1]);
22 printf("arr[2] %d\n", arr[2]);
23 }
1 #include
2
3 int main()
4 {
5 int arr[3] = {1, 2, 3};
6 int i = 10;
7 int p = 0;
8
9 __asm__(
10 //"ldr %0, [%2]\n" //addr and value not change
11 //"ldr %0, [%2, #4]\n" //addr not change, value change
12 //"ldr %0, [%2, #4]!\n" //addr change, value change
13 "ldr %0, [%2], #4\n" //addr change, value not change
14 "mov %1, %2\n"
15
16 : "+r" (i), "+r" (p) //error
17 : "r" (arr)
18 : "r0"
19 );
20
21 printf("i is: %d\n", i);
22 printf("p is: %x\n", p);
23 printf("arr is: %x\n", arr);
24 }