Hỏi về lập trình nhúng với asm

Chào a. E có một thắc mắc, hướng về lập trình nhúng ngôn ngữ asm là . Ngôn ngữ c++ /c nhúng vào hệ thống nhỏ nào đó có tốt hơn ngôn ngữ asm không anh, hay nó có ưu điểm j ạ. E không hiểu về asm cho lắm ,các tài liệu về asm rất ít ạ.

1 Like

Mình không làm embedded, nhưng mình có thể nói:

  • Nếu bạn dùng asm trực tiếp thì bạn có full khả năng tinh chỉnh từng ly từng tí một, tiết kiệm từng byte từng bit cho mã lênh;
  • Nếu bạn dùng C/C++ thì bạn bị phụ thuộc khá nhiều vào độ “khôn” của compiler, mà lịch sử cho thấy cái gì được đúc kết thành hệ thống lớn đều sinh ra cồng kềnh cả, máy tính giờ thì mạnh nhưng đây là lập trình nhúng, các thiết bị rẻ nhưng yếu xìu, bộ nhớ thì ít, dùng hệ thống lớn gồm bộ compiler + SDK của C/C++ thì không đảm bảo cái chuyện tối ưu nhất như mình ghi, còn nếu bạn dùng C/C++ nhưng cố gắng điều chỉnh từng hàm để ra code tối ưu (độ dài, space complexity) thì tức là bạn đang gần như code asm trong C/C++ rồi.
  • Nếu compiler và hệ thống build của bạn tốt, thì dùng ngôn ngữ bậc cao vẫn dễ quản lý và bảo trì hơn.

Tài liệu asm không ít nhé, chỉ có ít tài liệu Tiếng Việt thôi.

4 Likes

Thanks bác .
Đôi khi e không có tg . Thì hỏi là học nhanh nhất :).

Cấu trúc một chương trình nhúng theo mình biết bao gồm các phần :

  1. Phần start up : set up các điều kiện ban đầu, như set stack pointer, khởi tạo vector table, khởi tạo các register, check ROM, check RAM … phần này là phần khó nhất, và thường viết bằng assembly( cũng có khi viết bằng C).
  2. Phần main : thực hiện các công việc của hệ thống nhúng, như giao tiếp với các device để truyền , gửi, xử lý data… phần này viết toàn bộ bằng C. Trong phần này sẽ có những khi cần xem code C được compiler gen ra code asm( do compiler làm ) để check code asm như nào

Theo mình bạn chỉ cần học ASM ở mức biết, tức là đọc được code assembly và đoán được code này làm gì là đủ, còn lại đừng nên đi sâu, thay vào đó hãy đi sâu vào hướng lập trình nhúng sử dụng ngôn ngữ C

  • C++ thì mình chưa làm với nhúng bao giờ, nhưng theo mình biết sử dụng C++ thường là ở mức cao hơn nữa, ví dụ lập trình giao diện cho hệ thống nhúng sử dung QT , các hệ thống multimedia trên oto…
1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?