Vì vậy, nếu tôi đã hiểu đúng mọi thứ
Không hẳn.
Nó là một tệp nhị phân và dữ liệu của nó là không thể hiểu được đối với con người chúng ta
Thông thường, một tệp nhị phân không thể hiểu được đối với con người và máy móc, đặc biệt là khi mục đích của tệp không xác định. Lưu ý rằng không phải tất cả các tệp nhị phân là các tệp thực thi. Rất nhiều tệp nhị phân là các tệp dữ liệu không chứa bất kỳ hướng dẫn nào của máy. Đó là lý do tại sao phần mở rộng tệp được sử dụng khi đặt tên tệp (trong một số HĐH). Các . phần mở rộng com đã được CP / M sử dụng để biểu thị một tập tin thực thi. Các . Phần mở rộng exe đã được MS-DOS thêm vào để biểu thị một định dạng tệp thực thi khác. * nixes sử dụng thuộc tính exec để biểu thị tập tin nào có thể được thực thi, mặc dù nó có thể là script cũng như code.
Như đã được đề cập bởi những người khác, các tệp nhị phân, chứa các số, phải được xem bởi chương trình kết xuất hex hoặc trình soạn thảo hex chứ không phải bởi trình xem văn bản.
có một ví dụ về nội dung của chương trình ping.exe
Tệp đó thực sự là một chương trình có thể định vị lại và không phải tất cả dữ liệu trong tệp đó đại diện cho mã máy. Có thông tin về chương trình như thư viện động nào cần, các thường trình phải được liên kết, các yêu cầu đối với ngăn xếp và bộ nhớ chương trình & dữ liệu và điểm vào của chương trình. Các toán hạng địa chỉ trong tệp có thể là các giá trị tương đối cần được tính thành các giá trị tuyệt đối hoặc các tham chiếu cần được giải quyết.
"Tệp chương trình" mà bạn có thể nghĩ đến được gọi là tệp hình ảnh nhị phân hoặc kết xuất bộ nhớ chương trình. Một tệp như vậy sẽ chỉ chứa mã máy và dữ liệu, với tất cả các tham chiếu địa chỉ được đặt đúng để thực thi.
ngay cả khi họ biết mã hội (mức ngôn ngữ máy thấp nhất.)
Ngôn ngữ hội không giống như ngôn ngữ máy . CPU thông thường (như để loại trừ các máy tính ngôn ngữ cấp cao) chấp nhận mã máy làm đầu vào, mỗi lần một lệnh. Các toán hạng là các thanh ghi hoặc địa chỉ bộ nhớ số. Ngôn ngữ hội là ngôn ngữ cấp cao hơn có thể sử dụng nhãn biểu tượng cho các vị trí và biến chỉ dẫn, cũng như thay thế mã op số bằng mnemonics. Một chương trình ngôn ngữ lắp ráp phải được chuyển đổi sang ngôn ngữ / mã máy trước khi thực sự có thể được thực thi (thường là bởi các tiện ích được gọi là trình biên dịch, trình liên kết và trình tải).
Hoạt động ngược lại, có thể được thực hiện trên các tệp chương trình với một số thành công và mất thông tin tượng trưng. Việc tháo rời bộ nhớ kết xuất hoặc tệp hình ảnh chương trình là bản dùng thử và lỗi nhiều hơn, vì mã và vị trí dữ liệu cần được xác định thủ công.
BTW có những người có thể đọc và mã mã máy (số). Tất nhiên điều này dễ dàng hơn nhiều đối với CPU hoặc vi điều khiển 8 bit so với bộ xử lý CISC 32 bit với hàng tá chế độ địa chỉ bộ nhớ.