Tôi đã thấy các tệp .S trong các dự án khác nhau như hạt nhân Linux, hạt nhân FreeBSD hoặc trong một số dự án khác. Những tệp này làm gì và tại sao chúng tôi không thể có tệp .C thay vào đó?Tệp .S là gì?
Trả lời
.S
file là mã file nguồn viết bằng lắp ráp. Assembly là một dạng lập trình cực kỳ cấp thấp. Các tệp này chứa các hướng dẫn lắp ráp cho bộ xử lý theo thứ tự tuần tự và thường được biên dịch dựa trên kiến trúc đã chọn. Ví dụ về các tệp như vậy thường được thấy trong hạt nhân Linux cho các kiến trúc cụ thể, ví dụ: x86, sparc, ARM vv
Để biết thêm thông tin về ngôn ngữ lắp ráp:
- X86 Assembly/GAS syntax
- x86 Instruction list
- TLDP Linux Assembly Howto
- Ví dụ trong hạt nhân Linux: arch/x86/net/bpf_jit.S
Họ là assembler code file:
Một ngôn ngữ lắp ráp là một ngôn ngữ lập trình bậc thấp cho máy tính, vi xử lý, vi điều khiển, và thiết bị có thể lập trình khác, trong đó mỗi câu lệnh tương ứng với một máy hướng dẫn ngôn ngữ . Ngôn ngữ lắp ráp cụ thể cho một kiến trúc máy tính nhất định, trái ngược với hầu hết các ngôn ngữ lập trình bậc cao , có thể di động hơn.
và vì vậy các tệp này không giống như tệp mã C.
Lưu ý rằng C files can be inlined with assembly instructions.
Phần mở rộng .S
cho biết số assembly language file.
Tại sao chúng tôi không thể có tệp .C thay thế?
Bởi vì mã nguồn liệu - có thể là do con người bước vào hoặc lắp ráp tạo - là lắp ráp, không C.
.S tệp được viết bằng ngôn ngữ lắp ráp tức là mức thấp o f lập trình. Trong mã nguồn hạt nhân Linux, .S thường là các tệp khởi đầu mà hạt nhân chạy khi hạt nhân Linux khởi động (ví dụ: - head.S). Chúng tôi viết điều này trong .S và không phải trong .C vì chúng tôi chưa sẵn sàng chạy .C đã biên dịch .O tệp tại thời điểm này. Chúng ta cần làm việc với các thanh ghi phụ thuộc vào kiến trúc và khởi động hạt nhân.
* .S tệp là tệp lắp ráp. Tại sao. & tại sao không phải tệp .c? Do công cụ phụ thuộc máy/khởi tạo sớm như thiết lập bộ nhớ cache & bộ nhớ chỉ có thể thực hiện lệnh hướng dẫn lắp ráp như hướng dẫn I/O. Hạt nhân không có thư viện libc sang trọng để quản lý ban đầu các tài nguyên khác nhau. Và tài nguyên phần cứng tại bất kỳ thời điểm nào ngay cả trong khi thực thi ứng dụng thực hiện các cuộc gọi hệ thống gọi là các thủ tục i/o được mã hóa bằng ngôn ngữ assembly.
.S tệp là các tệp ngôn ngữ lắp ráp.Chúng là một dạng mã máy. Nó ở mức độ thấp của lập trình. Tất cả mã phụ thuộc máy được viết bằng ngôn ngữ lắp ráp. Ngôn ngữ lắp ráp là khác nhau cho các bộ vi xử lý khác nhau.
- 1. Trong Perl, sự khác nhau giữa s/^ \ s + // và s/\ s + $ // là gì?
- 2. [\ S \ s] * có nghĩa là gì trong regex trong PHP?
- 3. Emacs revert-buff (s-u): s-u là gì?
- 4. "%. * S" có nghĩa là gì trong printf?
- 5. Vai trò của tệp .s trong dự án C là gì?
- 6. Sự khác nhau giữa việc gọi Double.valueOf (String s) và new Double (String s) là gì?
- 7. Thay thế regex này là gì "$ content = ~ s/\ n-- \ n. *? $ // s" thực sự đang hoạt động?
- 8. % S có nghĩa là gì trong PHP, HTML hoặc XML?
- 9. "s" có nghĩa là gì trong cấu trúc?
- 10. Ruby tương đương với `s =" hello,% s của Python ở đâu là% s? " % ("John", "Mary") `
- 11. Tệp crossdomain.xml là gì?
- 12. Tệp ".dll.a" là gì?
- 13. Tệp PDB là gì?
- 14. Tệp PDB là gì?
- 15. Tệp .axf là gì?
- 16. Tệp .sln.ide là gì?
- 17. Tệp .sconsign.dblite là gì?
- 18. Tệp * .vshost.exe.config là gì?
- 19. Tệp MDF là gì?
- 20. Tệp .episode là gì ..?
- 21. Tệp .h.gch là gì?
- 22. Tệp .htaccess là gì?
- 23. Điều gì:% S làm trong vim?
- 24. mở rộng tệp lắp ráp, .s79, .s82, s90, .asm, .s, v.v ... sự khác biệt của chúng là gì?
- 25. Vị từ s() làm gì trong Prolog?
- 26. gì combinator này làm: s (sk)
- 27. Thuộc tính "s" nghĩa là gì trong một thẻ ô trong XLSX
- 28. Tệp xcscheme là gì? Mục đích của nó là gì?
- 29. Facebook Tệp kênh là gì?
- 30. Tệp hrl Erlang là gì?
Kiểm tra liên kết này ... Chuỗi ARM BOOT của nó ... – user1457958
http://www.linux-arm.org/LinuxBootLoader/MONItor! – user1457958