Hỏi đáp
Chia sẻ kiến thức, cùng nhau phát triển
Em có một câu hỏi nhỏ mong được mọi người giải đáp! Em muốn tạo một phần mềm truy xuất vào sâu bên trong phần cứng (đọc thông số nhiệt độ của các cảm biến gắn trong main, truy xuất vào ổ cứng đến từng sector, xuất từng byte dữ liệu ra cổng USB, tắt máy bằng ngắt,....) thì phải học ngôn ngữ lập trình gì ạ, em hiện tại đã học đến nâng cao ngôn ngữ C nhưng vẫn không tài nào làm được những việc kể ở trên ạ!
Em xin hết! Xin chân thành cảm ơn !!!
Thử Assembly đi bạn...
Tất cả các ngôn ngữ bật cao (C/C++ JS C# Java) thì muốn truy cập phần cứng thì nó phải được hỗ trợ bởi 1 hoặc nhiều thư viện để giao tiếp và điều khiển phần cứng có hoặc ko sự hỗ trợ bởi môi trường (HĐH, máy ảo v.v..) kiểu như cài win cái bàn phím hay chuột ko hoạt động thì phải cài Drivers cho nó vậy. Đơn cử khi bạn lập trình Arduino và bạn muốn có Wifi??? Bạn phải sử dụng đến modun ESP8266 và khi mua bạn sẽ có luôn thư viện sử dụng đi kèm hỗ trợ C(tất nhiên rồi)... => Vậy nếu muốn sử dụng các ngôn ngữ trên thì bạn phải có sự hỗ trợ bởi thư viện hoặc bạn phải tự viết ra chúng!
Còn 1 ngôn ngữ gần với mã máy hơn đó là Assembly, mọi ngôn ngữ mà bạn học sẽ được trình biên dịch build ra theo từng cách tùy loại ngôn ngữ (C/C++ nó khác, Java C# nó khác, JS nó khác) rồi mới thành 0101011(nhị phân | mã máy). Tiếp cận ngôn ngữ này bạn sẽ đến 1 trình level cao hơn, bạn sẽ hiểu cách thức Soc,chip nó hoạt động ra sao, biến, vòng lặp vvv(bộ môn cấu trúc máy tính sẽ nói rõ điều này). Nghĩa là bạn có thể toàn quyền truy cập phần cứng (nháy 1 con led trên main laptop, hay phát nhạc Game Mario trên loa main) đều có thể làm được. Assembly ko chỉ nhúng mà có thể hacking các kiểu vô vàng các thứ khác. Thần thông vậy nhưng tiếp cận được và sử dụng được thì hjhj (học đi rồi biết)
Tóm cái váy lại, ngôn ngữ nào cũng được, mỗi ngôn ngữ đẻ ra thì đều có cái đặt thù riêng cho từng công việc (tốc độ, phức tạp của Project vvv)