2011-12-15 36 views
7

Thường thì tôi nghe những người xung quanh tôi thích thảo luận về viết bằng ngôn ngữ lắp ráp và đó là một trong những lý do đó tôi cũng muốn học cách viết nó. Hiện tại tôi đang học lắp ráp và C cùng nhau.Bạn có bao giờ cần viết mã thực trong ngôn ngữ lắp ráp không?

Vì vậy, câu hỏi của tôi là khi nào bạn cần viết assembly trong mã thực?
Có tốt không?
Có thực sự sử dụng nó khi viết mã trong C không?

Bất kỳ nhận xét hoặc câu trả lời hữu ích nào sẽ được đánh giá cao!

+1

Hội thoại không còn hữu ích nữa IMO, nhưng khi đó, việc đọc nó thường hữu ích hơn việc viết nó. – zneak

+1

Bạn sẽ cần nó bất cứ lúc nào trình biên dịch thực sự không cắt nó. Chẳng hạn như mã giao dịch với dữ liệu video, mô phỏng khoa học, một số nội dung trong trò chơi đặc biệt nếu bạn đang sử dụng ngân sách chu kỳ thực sự chặt chẽ, mọi thứ được Bashwork đề cập, v.v. Ít hiếm hơn một số người làm cho nó trở thành. Rất hiếm khi các ứng dụng của công ty nhàm chán hút cuộc sống ra khỏi bạn khi bạn viết chúng. – harold

Trả lời

4

Rất hiếm. Tôi đã không bao giờ phải trong 23 năm + sự nghiệp. Nhưng tôi làm việc trong không gian ứng dụng Client Server DB chủ yếu, có những công việc mà bạn sẽ sử dụng nó rất nhiều, hoặc ít nhất là cần phải biết bộ xử lý thực sự hoạt động như thế nào.

Tuy nhiên đó là điều đầu tiên tôi học được, không tính điện tử kỹ thuật số cơ bản, và tôi muốn nói rằng việc học đã giúp ích rất nhiều cho sự nghiệp và lập trình sở thích của tôi.

5

tôi sẽ viết một bài dài nhưng quyết định để tóm tắt thay vì:

  1. mã nhúng, bộ tải khởi động, backends biên dịch
  2. vâng, nó sẽ giúp bạn hiểu và gỡ lỗi mã biên dịch của bạn
  3. thời gian duy nhất tôi đã sử dụng nó trong c là để đọc thanh ghi đồng hồ thời gian thực
8

Mặc dù việc viết mã trong hội đồng ngày càng trở nên hiếm hoi, nó vẫn rất tốt để cắt n lắp ráp đơn giản để hiểu cách mọi thứ hoạt động dưới mui xe. Trình biên dịch tối ưu hóa hiện đại của C/C++ cho phép bạn viết mã trong C, dịch thành các lệnh lắp ráp có chất lượng rất cao, thường vượt qua những gì bạn có thể viết bằng tay với chi phí làm cho kết quả ít đọc được hơn (ví dụ bằng cách chèn các lệnh rỗng để tối ưu hóa việc sử dụng Đường dẫn của CPU).

Nếu bạn viết trình biên dịch cho kiến ​​trúc mới, thư viện cấp thấp hoặc hệ thống nhúng có ràng buộc tài nguyên nghiêm ngặt, bạn có thể cần phải sử dụng assembly. Đối với mọi thứ khác, C và C++ sẽ làm tốt hay tốt hơn.

2

Tôi đã có nhiều lần khi cần viết mã asm tại nơi làm việc, trong đó bạn không thể làm một số thứ nhất định (ví dụ: truy cập thanh ghi CPU đặc biệt hoặc sử dụng lệnh hệ thống của CPU), hoặc mã C đã biên dịch chậm hoặc quá lớn (trình biên dịch không đủ tốt).

Tuy nhiên, phần nhỏ của mã asm hoặc thời gian viết nó khá là không đáng kể.

Học asm là tốt. Nó làm cho bạn "nhìn thấy" thông qua mã C của bạn, dự đoán những gì hướng dẫn và bao nhiêu nó biến thành, ước tính khoảng tốc độ của các phần của mã. Trong quá trình bạn học một số tối ưu hóa và các thủ thuật khác và một vài thuật toán/phương pháp hay mà bạn có thể chuyển vào mã C của mình. Chỉ cần nhìn vào những câu hỏi rất nhiều về con trỏ C hoặc chuyển đổi các số giữa nhị phân và thập phân hoặc số học chính xác tùy ý. Biết asm giúp với những điều này và những thứ khác.

3

Sử dụng chuyên nghiệp ngôn ngữ lắp ráp là khá phổ biến trong thế giới được nhúng. Có rất nhiều ứng dụng xung quanh chúng tôi, nơi vi điều khiển làm những việc đơn giản nhưng hữu ích. Ví dụ, hãy xem tinyAVR family of microcontrollers from Atmel, đặc biệt là ATtiny13 với bộ nhớ chương trình 1kB cực kỳ nhỏ và không có RAM nào ngoại trừ 32 thanh ghi CPU 8 bit. Thật tuyệt vời, những gì các chip này là capable of.Con chip đó tốn khoảng một đô la khi mua với số lượng lớn. Vì vậy, khi bạn tạo ra một số lượng lớn thiết bị cần logic đơn giản (hoặc thậm chí không đơn giản), tiết kiệm chi phí sản xuất phần cứng vượt xa chi phí của việc tạo thủ công mã trong trình lắp ráp để làm cho nó hoạt động trên nền tảng cực kỳ hạn chế.

2

Tôi đã thực hiện nó hai lần trong năm 2011 cho đến nay và tôi chủ yếu làm việc trên dòng ứng dụng kinh doanh Java. Có ích cho việc thiết lập một setup.exe nhanh chóng để bao bọc JRE và cài đặt ứng dụng. Có thể đã làm điều đó trong C, nhưng nó nhanh hơn để lấy và thiết lập một trình biên dịch hơn là một trình biên dịch và cho một ứng dụng đơn giản, thời gian ghi là so sánh theo một trong hai cách ... Cũng được sử dụng nó để làm việc trên một vấn đề interfacing với một thiết bị USB. Đã thất bại vì những lý do không rõ qua JNA, vì vậy tôi đã viết nó trong hội đồng để đảm bảo rằng tôi biết nơi mà mọi thứ đã diễn ra và khi nào.

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