Định nghĩa hợp ngữ

Hợp ngữ là gì?

Hợp ngữ là một loại ngôn ngữ lập trình cấp thấp nhằm giao tiếp trực tiếp với phần cứng của máy tính.Không giống như ngôn ngữ máy, bao gồm các ký tự nhị phân và thập lục phân, các ngôn ngữ hợp ngữ được thiết kế để con người có thể đọc được.

Các ngôn ngữ lập trình cấp thấp như hợp ngữ là cầu nối cần thiết giữa phần cứng bên dưới của máy tính và các ngôn ngữ lập trình cấp cao hơn — chẳng hạn như Python hoặc JavaScript — trong đó các chương trình phần mềm hiện đại được viết.

Bài học rút ra chính

  • Hợp ngữ là một loại ngôn ngữ lập trình dịch các ngôn ngữ cấp cao sang ngôn ngữ máy.
  • Nó là cầu nối cần thiết giữa các chương trình phần mềm và nền tảng phần cứng cơ bản của chúng.
  • Hợp ngữ dựa trên cú pháp ngôn ngữ, nhãn, toán tử và chỉ thị để chuyển đổi mã thành lệnh máy có thể sử dụng được.
  • Hợp ngữ có thể chuyển qua các trình lắp ráp một lần hoặc nhiều lần, mỗi bộ đều có những cách sử dụng và lợi ích cụ thể.
  • Ngày nay, ngôn ngữ lắp ráp hiếm khi được viết trực tiếp, mặc dù chúng vẫn được sử dụng trong một số ứng dụng thích hợp chẳng hạn như khi yêu cầu hiệu suất đặc biệt cao.

Cách ngôn ngữ hợp ngữ hoạt động

Về cơ bản, các hướng dẫn cơ bản nhất được thực thi bởi máy tính là mã nhị phân, bao gồm mã số một và số không.Những mã đó được chuyển trực tiếp thành trạng thái “bật” và “tắt” của dòng điện di chuyển qua các mạch vật lý của máy tính.Về bản chất, những mã đơn giản này tạo thành nền tảng của “ngôn ngữ máy”, ngôn ngữ lập trình đa dạng cơ bản nhất.

Tất nhiên, không con người nào có thể xây dựng các chương trình phần mềm hiện đại bằng cách lập trình rõ ràng các chương trình phần mềm và số không.Thay vào đó, các lập trình viên của con người phải dựa vào các lớp trừu tượng khác nhau có thể cho phép họ trình bày các lệnh của họ theo một định dạng trực quan hơn đối với con người.

Cụ thể, các lập trình viên hiện đại đưa ra các lệnh bằng cái gọi là “ngôn ngữ cấp cao”, sử dụng cú pháp trực quan như các từ và câu tiếng Anh toàn bộ, cũng như các toán tử logic như “và,” “hoặc” và “khác” quen thuộc với cách sử dụng hàng ngày.

Tuy nhiên, cuối cùng, những lệnh cấp cao này cần được dịch sang ngôn ngữ máy.Thay vì làm như vậy theo cách thủ công, các lập trình viên dựa vào các hợp ngữ có mục đích là tự động dịch giữa các ngôn ngữ cấp cao và cấp thấp này.Các ngôn ngữ hợp ngữ đầu tiên được phát triển vào những năm 1940, và mặc dù các lập trình viên hiện đại và các bộ xử lý ngôn ngữ tự nhiên hiện đại dành rất ít thời gian để xử lý các ngôn ngữ hợp ngữ, chúng vẫn rất cần thiết cho hoạt động tổng thể của một máy tính.

Trong những ngày đầu của máy tính, cả lập trình hệ thống và lập trình ứng dụng đều diễn ra hoàn toàn bằng hợp ngữ.Nếu không có hợp ngữ, nhiều máy tính hiện đại và các ngôn ngữ cấp cao hơn mà chúng ta sử dụng ngày nay sẽ không thể thực hiện được.

Các thành phần của hợp ngữ

Cú pháp

Khi viết bất kỳ mã nào bằng bất kỳ ngôn ngữ chương trình nào, phải tuân theo một thứ tự quy tắc cụ thể, có thể quan sát được để cho phép trình biên dịch thực thi mã mà không bị lỗi.Các quy tắc này được định nghĩa là cú pháp và chúng chứa các tiêu chí như số lượng ký tự tối đa cho phép, các ký tự dòng mã phải bắt đầu bằng ký tự nào hoặc các ký hiệu nhất định "tức là dấu chấm phẩy" có nghĩa là gì.

Nhãn mác

Nhãn là một ký hiệu đại diện cho địa chỉ nơi lưu trữ một lệnh hoặc dữ liệu.Mục đích của nó là hoạt động như đích khi được tham chiếu trong một câu lệnh.Nhãn có thể được sử dụng ở bất kỳ đâu mà một địa chỉ có thể được sử dụng trong hợp ngữ.Nhãn tượng trưng bao gồm một số nhận dạng theo sau bởi dấu hai chấm, trong khi nhãn số bao gồm một kỹ thuật số duy nhất theo sau bởi dấu hai chấm.

Các nhà khai thác

Còn được gọi là lệnh, toán tử là biểu thức logic xuất hiện sau trường nhãn.Ngoài ra, nó phải được đặt trước ít nhất một ký tự khoảng trắng.Các toán tử có thể là opcode hoặc chỉ thị.Opcode tương ứng trực tiếp với các lệnh máy và mã hoạt động bao gồm bất kỳ tên đăng ký nào được liên kết với lệnh.Ngoài ra, mã hoạt động chỉ thị là các hướng dẫn được biết bởi trình lắp ráp.

Chỉ thị

Directives là những hướng dẫn cho trình lắp ráp cho biết những hành động nào phải diễn ra trong quá trình lắp ráp.Các chỉ thị có tầm quan trọng trong việc khai báo hoặc dành bộ nhớ cho các biến; các biến này có thể được gọi lại sau này trong các quy trình để thực hiện các chức năng động hơn.Các chỉ thị cũng được sử dụng để chia nhỏ các chương trình thành các phần khác nhau.

Macro

Macro hợp ngữ là một định dạng mẫu giày trình bày một chuỗi hoặc mẫu câu lệnh.Chuỗi các câu lệnh hợp ngữ này có thể phổ biến cho nhiều chương trình khác nhau.Một cơ sở macro được sử dụng để diễn giải các định nghĩa macro, trong khi lệnh gọi macro được chèn vào mã nguồn nơi mã lắp ráp "bình thường" sẽ được sử dụng thay vì tập hợp các câu lệnh macro.

Dễ nhớ

Ghi nhớ là một từ viết tắt của một hoạt động.Một ghi nhớ được nhập vào mã hoạt động cho mỗi lệnh chương trình lắp ráp để chỉ định một "opcode" rút gọn đại diện cho một bộ mã hoàn chỉnh, lớn hơn.Ví dụ: phép ghi nhớ "nhân với hai" có một bộ mã đầy đủ thực hiện phép ghi nhớ.

Giao dịch tần số cao

Ngày nay, hợp ngữ vẫn là chủ đề nghiên cứu của các sinh viên khoa học máy tính, nhằm giúp họ hiểu phần mềm hiện đại liên quan như thế nào với các nền tảng phần cứng cơ bản của nó.Trong một số trường hợp, lập trình viên phải tiếp tục viết bằng hợp ngữ, chẳng hạn như khi yêu cầu về hiệu suất đặc biệt cao hoặc khi phần cứng được đề cập không tương thích với bất kỳ ngôn ngữ cấp cao nào hiện tại.

Một ví dụ có liên quan đến tài chính là nền tảng giao dịch tần suất cao (HFT) được một số công ty tài chính sử dụng.Trong thị trường này, tốc độ và độ chính xác của các giao dịch là điều tối quan trọng để các chiến lược giao dịch HFT chứng minh được lợi nhuận.Do đó, để có được lợi thế trước các đối thủ của mình, một số công ty HFT đã viết phần mềm giao dịch của họ trực tiếp bằng ngôn ngữ hợp ngữ, do đó không cần đợi lệnh từ ngôn ngữ cấp cao hơn được dịch sang ngôn ngữ máy.

Nhiều người tin rằng hợp ngữ có đường cong học tập dốc nhất và là ngôn ngữ máy tính khó học nhất.

Ưu điểm và nhược điểm

Hợp ngữ thường có thể được thực thi nhanh hơn các ngôn ngữ cấp cao.Việc chèn xóa các thành phần của mã hợp ngữ tương đối dễ dàng và hợp ngữ thường yêu cầu ít hướng dẫn hơn để hoàn thành một tác vụ khi so sánh với các loại ngôn ngữ khác.

Các ngôn ngữ hợp ngữ cũng thường được sử dụng bởi các lập trình viên muốn kiểm soát tốt hơn máy tính của họ vì các ngôn ngữ hợp ngữ cho phép bạn thao tác trực tiếp phần cứng của mình.Do tốc độ và tầm quan trọng của nó, một số chương trình được viết đặc biệt bằng cách sử dụng hợp ngữ vì mã thường có thể nhỏ hơn.

Các ngôn ngữ hợp ngữ có xu hướng có một số nhược điểm.Các chương trình dài được viết bằng hợp ngữ thường yêu cầu khả năng tính toán nặng hơn và không thể chạy trên các máy tính nhỏ.Một số có thể thấy cú pháp của hợp ngữ khó nhớ hơn và có thể mất nhiều thời gian hơn để viết mã bằng hợp ngữ vì nó phức tạp hơn.Ngoài ra, hợp ngữ thường không di động giữa các loại máy tính khác nhau; tương tự như cách lợi ích của nhân viên bị mất khi chuyển đổi công ty, các ngôn ngữ không thể được dịch liền mạch sang các máy tính khác nhau.

Ưu điểm
  • Việc thực thi có thể đơn giản hơn so với các ngôn ngữ khác

  • Thực thi thường nhanh hơn so với các ngôn ngữ khác

  • Cho phép kiểm soát trực tiếp phần cứng

  • Mã có thể vẫn nhỏ hơn so với các ngôn ngữ khác

Nhược điểm
  • Lập trình có thể khó tiếp thu hơn so với các ngôn ngữ cấp cao

  • Cú pháp của hợp ngữ khó

  • Không di động giữa các máy

Các loại nhà lắp ráp

Hợp ngữ phải được dịch sang ngôn ngữ máy bằng trình hợp dịch.Có hai loại trình lắp ráp chính.

Trình hợp dịch một lần quét một chương trình và tạo một chương trình nhị phân tương đương.Loại trình hợp dịch này xác nhận mã hợp ngữ bằng cách tra cứu mã trong bảng mã dễ nhớ.Trình hợp dịch một đường chuyền thường nhanh hơn trình hợp dịch nhiều đường truyền và thường không cần phải xây dựng bất kỳ mã trung gian nào.

Trình hợp dịch nhiều đường có nghĩa là trình hợp dịch sử dụng nhiều hơn một đường chuyền.Trình lắp ráp nhiều đường chuyền tạo một bảng với mọi ký hiệu và mỗi giá trị của chúng trong lần chuyển đầu tiên, sau đó sử dụng bảng trong các lần chuyển tiếp sau này để tạo mã mới.Mỗi đường chuyền riêng biệt thường xử lý một nhiệm vụ cụ thể khác nhau.Mặc dù thường chậm hơn, các bộ lắp ráp nhiều đường với cấu trúc mô-đun thường có thể được sử dụng lại cho các máy khác nhau.

Ví dụ về mã hợp ngữ

Dưới đây là một ví dụ về mã hợp ngữ Netwide Assembler (NASM).

Ví dụ về Mã hợp ngữ.

Đại học Loyola Marymount

Trong ví dụ này, lệnh SYSCALL ở cuối mã sẽ kích hoạt phần bộ nhớ nơi các dịch vụ hệ điều hành được lưu trữ.Sau đó, mã RAX được sử dụng để gọi mã được viết, sau đó RDI để thoát.Hàm SYSCALL được sử dụng hai lần để gọi hệ điều hành cũng như để thông báo cho hệ thống khi mã kết thúc và đã đến lúc thoát.

Ví dụ về Hợp ngữ là gì?

Các ngôn ngữ hợp ngữ được sử dụng phổ biến nhất bao gồm ARM, MIPS và x86.

C ++ có phải là ngôn ngữ hợp ngữ không?

C ++ không bao gồm mã hợp ngữ.Ngôn ngữ tính toán C ++ bao gồm mã C ++ mà trình biên dịch chuyển thành mã máy thực thi.

Python có phải là một ngôn ngữ hợp ngữ không?

Python cao cấp hơn các ngôn ngữ hợp ngữ.Hợp ngữ được coi là một ngôn ngữ cấp thấp, trong khi các ngôn ngữ cấp cao như C, Java hoặc Python sử dụng số 0 và số 1 thay vì số, ký hiệu và chữ viết tắt.

Ngày nay các ngôn ngữ hợp ngữ được sử dụng như thế nào?

Mặc dù được coi là ngôn ngữ cấp thấp hơn so với các ngôn ngữ nâng cao hơn, nhưng hợp ngữ vẫn được sử dụng.Hợp ngữ được sử dụng để thao tác trực tiếp phần cứng, truy cập các hướng dẫn bộ xử lý chuyên biệt hoặc đánh giá các vấn đề hiệu suất quan trọng.Các ngôn ngữ này cũng được sử dụng để tận dụng lợi thế tốc độ của chúng so với các ngôn ngữ cấp cao cho các hoạt động nhạy cảm với thời gian như giao dịch tần suất cao.

Điểm mấu chốt

Hợp ngữ là mã cấp thấp dựa trên mối quan hệ chặt chẽ giữa đầu vào các lệnh bằng ngôn ngữ mã hóa và cách máy diễn giải các lệnh mã.Mã được chuyển đổi thành các hành động thực thi bằng cách sử dụng trình hợp dịch chuyển đổi đầu vào thành các hướng dẫn dễ nhận biết cho máy.Mặc dù phổ biến trong những ngày đầu của máy tính, nhiều hệ thống lớn hơn sử dụng các ngôn ngữ cấp cao hơn.