2011-10-29 18 views

Trả lời

0

Tôi tin rằng không có sự tương đương như vậy với GCC gần đây trong Linux. Trình biên dịch phát ra các phần mở đầu và các giai đoạn khi thích hợp, và bạn nên để lại quyết định đó cho nó. Nó có thể khá tốt trong việc tạo các phần mở đầu hoặc các epilogues khá nhỏ, hoặc thậm chí đôi khi không tồn tại.

Bạn có thể mã chức năng của mình trong hội đồng. Hoặc bạn có thể đặt câu lệnh asm bên trong hàm của bạn.

Và bạn không cho biết lý do bạn muốn thực hiện điều đó. Mục tiêu của bạn là gì và tại sao bạn lại hỏi chính xác?

+0

Bạn đã sai, bản thân tôi đã từng sử dụng một điều như vậy, nhưng không thể nhớ bây giờ. – MetallicPriest

+3

Bạn đã làm điều đó với GCC? Trang được tham chiếu bởi SigTerm là phù hợp với những gì tôi đã nói: nếu bạn không muốn có phần mở đầu hoặc lời kết với GCC và Linux (trên các máy mục tiêu x86 hoặc AMD64), hãy sử dụng asm. –

+0

Vâng, thực sự có, nhưng chỉ cho một số kiến ​​trúc (nhúng), như bạn ngụ ý mình trong một bình luận. – ninjalj

7

Trên một số kiến ​​trúc, gcc hỗ trợ thuộc tính được gọi là "khỏa thân"; gcc docs gần nhất Tôi đã cung cấp danh sách kiến ​​trúc này: ARM, AVR, MCORE, RX và SPU.

Nếu bạn đang sử dụng một trong những kiến ​​trúc (gcc sẽ cung cấp cho bạn một cảnh báo nếu bạn cố gắng sử dụng nó và nó không được hỗ trợ), thuộc tính có thể được sử dụng như thế này:

__attribute__ ((naked)) int fun() 
{ 
} 

[Đã có một chút thảo luận gần đây về danh sách nhà phát triển gcc về việc thêm thuộc tính "khỏa thân" làm tính năng tổng quát hơn và cố gắng hỗ trợ nó trên nhiều kiến ​​trúc hơn, nhưng rõ ràng điều đó không giúp bạn :).]

Các vấn đề liên quan