Opcode là gì

Tôi còn khá mới với điều này. Tôi đã cố gắng nỗ lực để hiểu sự độc lạ giữa những pháp luật được đề cập một cách rõ ràng, tuy nhiên, tôi vẫn còn hoảng sợ. Đây là những gì tôi đã tìm thấy :

Trong ngôn ngữ trình biên dịch chương trình biên dịch (hoặc hội), mnemonic là tên viết tắt của một thao tác. Nó được nhập vào trường mã hoạt động của mỗi lệnh chương trình biên dịch chương trình. ví dụ AND AC,37 có nghĩa là AND đăng ký AC với 37. vì vậy AND, SUB và MUL là ghi nhớ. Chúng được dịch bởi trình biên dịch chương trình.

Bạn đang xem: Opcode là gì

Các hướng dẫn ( câu lệnh ) trong ngôn từ hội nói chung rất đơn thuần, không giống như những hướng dẫn trong ngôn từ lập trình cấp cao. Nói chung, mnemonic là một tên tượng trưng cho một lệnh ngôn ngữ máy thực thi duy nhất ( opcode ) và có tối thiểu một mnemonic opcode được xác lập cho mỗi lệnh ngôn từ máy. Mỗi lệnh thường gồm có một thao tác hoặc opcode, cộng với 0 hoặc nhiều toán hạng .

assembly
31
14 thg 7, 2013Ahmed Taher
OPCODE : Đó là một số được giải thích bởi máy của bạn (ảo hoặc silicon) đại diện cho hoạt động để thực hiện

Bạn đang đọc: Opcode là gì

BYTECODE : Giống như mã máy, ngoại trừ, phần lớn được sử dụng bởi trình thông dịch dựa trên phần mềm (như Java hoặc CLR)

MNEMONIC : Từ tiếng Anh MNEMONIC có nghĩa là “Một thiết bị như một mẫu chữ, ý tưởng hoặc liên kết giúp ghi nhớ một cái gì đó.”. Vì vậy, nó thường được các lập trình viên ngôn ngữ hội sử dụng để ghi nhớ “HOẠT ĐỘNG” mà máy có thể làm, như “THÊM” và “MUL” và “MOV”, v.v … Đây là trình biên dịch cụ thể.

MÃ MÁY: Đây là chuỗi các số bật và tắt các công tắc trong máy tính để thực hiện một công việc nhất định – chẳng hạn như thêm số, phân nhánh, nhân, v.v … Đây hoàn toàn là máy cụ thể và tài liệu tốt bởi những người thực hiện bộ xử lý.

Hội: Có hai “hội đồng” – một chương trình hội là một chuỗi các phép thuật và toán hạng được đưa đến một “trình biên dịch”, “lắp ráp” các ký hiệu và toán hạng thành mã máy thực thi. Tùy chọn một “trình liên kết” liên kết các hội đồng và tạo ra một tập tin thực thi.

” Hội ” thứ hai trong những ngôn từ dựa trên ” CLR ” ( ngôn từ. NET ) là một chuỗi mã CLR được truyền thông tin siêu dữ liệu, một loại thư viện mã thực thi, nhưng không hề thực thi trực tiếp .

41
Aniket đã làm rất tốt, nhưng tôi cũng sẽ đi.

Trước tiên, hãy hiểu rằng ở Lever thấp nhất, những chương trình máy tính và tổng thể tài liệu chỉ là những số lượng ( đôi lúc được gọi là words ), trong một số ít loại bộ nhớ. Thông thường nhất những từ này là bội số của 8 bit ( 1 và 0 ) ( ví dụ điển hình như 32 và 64 ) nhưng không nhất thiết và trong 1 số ít bộ giải quyết và xử lý, mỗi từ lớn hơn đáng kể. Mặc dù vậy, đó chỉ là những số lượng được biểu lộ dưới dạng một chuỗi 1 và 0, hoặc trên và ngoài nếu bạn muốn. Các số lượng có ý nghĩa gì tùy thuộc vào những gì / ai đã từng đọc chúng và trong trường hợp của bộ giải quyết và xử lý, nó đọc bộ nhớ một Word một lần và dựa trên số ( hướng dẫn ) mà nó nhìn thấy, triển khai 1 số ít hành vi. Những hành vi như vậy hoàn toàn có thể gồm có đọc một giá trị từ bộ nhớ, ghi giá trị vào bộ nhớ, sửa đổi giá trị mà nó đã đọc, nhảy đến một nơi khác trong bộ nhớ để đọc hướng dẫn từ đó .Trong những ngày đầu, một lập trình viên sẽ bật và tắt những công tắc nguồn theo nghĩa đen để đổi khác bộ nhớ, bật hoặc tắt đèn để đọc số 1 và 0, vì không có bàn phím, màn hình hiển thị, v.v. Khi thời hạn trôi qua, bộ nhớ ngày càng lớn hơn, bộ giải quyết và xử lý trở nên phức tạp hơn, những thiết bị hiển thị và bàn phím cho đầu vào được hình thành, và cùng với đó, cách thuận tiện hơn để lập trình .Anaphet diễn giải :OPCODE là một phần của Word hướng dẫn được bộ giải quyết và xử lý diễn giải là đại diện thay mặt cho hoạt động giải trí cần triển khai, ví dụ điển hình như đọc, viết, nhảy, thêm. Nhiều hướng dẫn cũng sẽ có OPERANDS tác động ảnh hưởng đến cách triển khai của lệnh, ví dụ điển hình như nói từ đâu trong bộ nhớ để đọc hoặc viết hoặc nhảy đến đâu. Vì vậy, nếu những lệnh có kích cỡ 32 bit ví dụ điển hình, bộ giải quyết và xử lý hoàn toàn có thể sử dụng 8 bit cho opcode và 12 bit cho mỗi hai toán hạng .Một bước tiến lên từ những công tắc nguồn bật tắt, mã hoàn toàn có thể được nhập vào máy bằng chương trình gọi là ” màn hình hiển thị “. Lập trình viên sẽ sử dụng những lệnh đơn thuần để nói bộ nhớ nào họ muốn sửa đổi và nhập MÃ SỐ MÃ, ví dụ : trong cơ sở 16 ( hex ) sử dụng 0 đến 9 và A đến F cho những chữ số .Mặc dù tốt hơn so với quy đổi công tắc nguồn, nhập mã máy vẫn chậm và dễ bị lỗi. Một bước tiến lên từ đó là CODE hội, sử dụng MNEMONICS dễ nhớ hơn thay cho số trong thực tiễn đại diện thay mặt cho một lệnh. Công việc của ASSEMBLER đa phần là quy đổi hình thức ghi nhớ của chương trình thành mã máy tương ứng. Điều này làm cho việc lập trình thuận tiện hơn, đặc biệt quan trọng so với những lệnh nhảy, trong đó một phần của lệnh là một địa chỉ bộ nhớ để chuyển đến hoặc một số ít từ để bỏ lỡ. Lập trình trong mã máy yên cầu những đo lường và thống kê thiết yếu để kiến thiết xây dựng hướng dẫn đúng chuẩn và nếu 1 số ít mã được thêm hoặc xóa, những lệnh nhảy hoàn toàn có thể cần phải được thống kê giám sát lại. Trình biên dịch giải quyết và xử lý việc này cho lập trình viên .

Điều này để lại BYTECODE, về cơ bản giống như mã máy, ở chỗ nó mô tả các hoạt động cấp thấp như đọc và ghi bộ nhớ và các tính toán cơ bản. Mã byte thường được hình thành để tạo ra khi TẠO ngôn ngữ cấp cao hơn, ví dụ PHP hoặc Java và không giống như mã máy cho nhiều bộ xử lý dựa trên phần cứng, có thể có các hoạt động để hỗ trợ các tính năng cụ thể ở cấp cao hơn Một điểm khác biệt chính là bộ xử lý của mã byte thường là một chương trình, mặc dù bộ xử lý đã được tạo để giải thích một số thông số kỹ thuật của mã byte, ví dụ: bộ xử lý có tên SOAR (Smalltalk On A RISC) cho Smalltalk bytecode. Mã máy mã hóa, đối với một số loại bộ xử lý như CISC và EISC (ví dụ Linn Rekursiv, từ những người đã tạo trình phát bản ghi), bản thân bộ xử lý chứa một chương trình diễn giải các hướng dẫn của máy, do đó có sự tương đồng.

Xem thêm: Ligament Là Gì

Dòng sau đây là mã x86 được phân tách.Dòng sau đây là mã x86 được phân tách .

68 73 9D 00 01 Push 0x01009D73 68 opcode. Với các byte sau đây, nó đại diện cho Đẩy hướng dẫn của x86 hội = ngôn ngữ. Lệnh đẩy đẩy dữ liệu có độ dài 4 byte (32 bit) để xếp chồng. Word Push chỉ là một mnemonic đại diện cho opcode 68. Mỗi byte 68 , – 73 , 9D , 00 , 01 mã máy.

mã máy dành cho máy thật (CPU) nhưng mã byte là mã máy giả cho máy ảo.

Khi bạn viết a Java code. Java biên dịch mã của bạn và tạo mã byte. ( Một tệp. Class ) và bạn hoàn toàn có thể thực thi cùng một mã tại bất kể nền tảng mà không biến hóa .

Java CODE | | BYTE CODE ________________|_______________ | | | x86 JVM SPARC JVM ARM JVM | | | | | | x86 SPARC ARM MACHINE CODE MACHINE CODE MACHINE CODE
“Hội” bắt nguồn từ mã “trình biên dịch” rất sớm sẽ “lắp ráp” các chương trình từ nhiều tệp (cái mà bây giờ chúng ta sẽ gọi là các tệp “bao gồm”).. trình biên dịch “không hỗ trợ bao gồm các tệp và do đó không” lắp ráp “.

Thật mê hoặc khi quan tâm rằng ” trình biên dịch ” được ý tưởng để tương hỗ ” chương trình con “. Ban đầu có những chương trình con ” bên trong ” và ” bên ngoài “. Các chương trình con ” nội bộ ” là những gì tất cả chúng ta sẽ gọi là ” nội tuyến “, trong khi những chương trình con ” bên ngoài ” được tiếp cận trải qua chính sách ” gọi ” nguyên thủy. Có nhiều tranh cãi vào thời gian đó về việc liệu những chương trình con ” bên ngoài ” có phải là một sáng tạo độc đáo tốt hay không .” Mnemonic ” xuất phát từ tên của vị thần Hy Lạp Mnemosyne, nữ thần của ký ức. Bất cứ điều gì giúp bạn ghi nhớ công cụ là một ” thiết bị ghi nhớ ” .
Gần đây tôi đã đọc một bài viết hay về điều này, Sự khác biệt giữa Opcode và Bytecode, do đó muốn chia sẻ với bất cứ ai sau một lời giải thích tốt về chủ đề này. Tất cả tín dụng thuộc về tác giả gốc .Gần đây tôi đã đọc một bài viết hay về điều này, Sự độc lạ giữa Opcode và Bytecode, do đó muốn san sẻ với bất kể ai sau một lời lý giải tốt về chủ đề này .

*

Opcode :

Opcode là viết tắt của mã hoạt động giải trí. Như tên gọi của nó, opcode là một loại mã cho máy biết phải làm gì, tức là phải triển khai thao tác nào. Opcode là một loại hướng dẫn ngôn từ máy .

Mã byte :

Bytecode tương tự như opcode về bản chất, vì nó cũng cho máy biết phải làm gì. Tuy nhiên, bytecode không được thiết kế để bộ xử lý thực thi trực tiếp, mà là một chương trình khác. Nó được sử dụng phổ biến nhất bởi một trình thông dịch dựa trên phần mềm như Java hoặc clr . Họ chuyển đổi từng tổng quát hướng dẫn máy thành a cụ thể hướng dẫn hoặc hướng dẫn máy để bộ xử lý của máy tính hiểu.

Xem thêm:

Trong thực tế, tên bytecode xuất phát từ các tập lệnh có các opcode một byte theo sau là các tham số tùy chọn .

Mã C ++ để kiểm tra phỏng đoán Collatz nhanh hơn hội viết tay – tại sao?Mã C + + để kiểm tra phỏng đoán Collatz nhanh hơn hội viết tay – tại sao ?Thay thế bộ đếm vòng lặp 32 bit bằng 64 bit ra mắt độ lệch hiệu suất điên rồTại sao GCC không tối ưu hóa a * a * a * a * a * a thành ( a * a * a ) * ( a * a * a ) ?LàMục đích của hướng dẫn LEA là gì ?Có thể ” dịch ngược ” Windows. exe không ? Hoặc tối thiểu là xem hội ?Làm cách nào để đạt được tối đa kim chỉ nan là 4 FLOP mỗi chu kỳ luân hồi ?Làm thế nào để bạn có được đầu ra của trình biên dịch từ nguồn C / C + + trong gcc ?Tại sao những chương trình không được viết trong hội tiếp tục hơn ?Làm thế nào để chạy một chương trình mà không có hệ quản lý ?Khi nào hội nhanh hơn C ?Điểm kiểm tra % eax % eaxTại sao GCC sử dụng phép nhân với 1 số ít lạ trong việc triển khai phép chia số nguyên ?Chức năng của những hướng dẫn Push / pop được sử dụng trên những thanh ghi trong cụm x86 là gì ?Mục đích của thanh ghi RBP trong trình biên dịch x86_64 là gì ?Num + + hoàn toàn có thể là nguyên tử cho ” int num ” không ?Mục đích của ESI và EDI ĐK ?

Là “chuyển đổi” nhanh hơn “nếu”?

Bảo vệ thực thi từ kỹ thuật đảo ngược ?Làm thế nào người ta hoàn toàn có thể thấy nội dung của ngăn xếp với gdb

Chuyên mục: Chuyên mục : Hỏi Đáp

5/5 - (1 vote)

Bài viết liên quan

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments