tôi vừa nhìn vào một sản lượng lắp ráp SPARC rất đơn giản mà tôi nhận được từ C programm này:tháo rời ra gcc xuất hiện để làm một "call 0" thay vì "gọi hàm-bù đắp", nhưng hoạt động một cách chính xác
int addition_func(int a, int b)
{
return(a+b);
}
void main()
{
int a = 20;
int b = 19;
int res;
res = addition_func(a, b);
}
Tháo lắp phần .text:
00000000 <addition_func>:
0: 81 c3 e0 08 retl
4: 90 02 00 09 add %o0, %o1, %o0
00000008 <main>:
8: 90 10 20 14 mov 0x14, %o0
c: 92 10 20 13 mov 0x13, %o1
10: 82 13 c0 00 mov %o7, %g1
14: 40 00 00 00 call 14 <main+0xc>
18: 9e 10 40 00 mov %g1, %o7
1c: 01 00 00 00 nop
tôi không hiểu tại sao "gọi là" hướng dẫn nói:
call 14 <main+0xc>
Tại sao nó không phải là:
call 0 <addition_func+0x0>
Chương trình hoạt động tốt, tuy nhiên, đầu ra này không có ý nghĩa quá nhiều với tôi. Bất kỳ đề xuất nào tại sao nó được xử lý theo cách này?
Cảm ơn
Có thể sử dụng một chủ đề mô tả hơn .... –