2012-06-08 33 views
11

Tôi đang làm việc trên thế giới chào hỏi nhiều hơn bằng cách sử dụng NASM following this tutorial (phần 4). Hướng dẫn này về cơ bản dạy bạn cách xử lý đầu vào dòng lệnh.
Đây là đoạn mã trong câu hỏi:pop Chỉ thị không được hỗ trợ ở chế độ 64 bit bằng NASM?

section .text 
     global _start 

_start: 
     pop  ebx  ; arg count 
     pop  ebx  ; arg[0] the program name 
     pop  ebx  ; arg[1-n] the remainder of the args 
         ; must each be indiviually popped 

Các lỗi mã ra trong biên soạn với error: instruction not supported in 64-bit mode đề cập đến 3 hướng dẫn pop trên. Upon viewing the docs có vẻ như mã này chỉ hoạt động đối với các hệ thống 32 bit.

Có hướng dẫn 642 bit pop không? Có ai có một hướng dẫn 64 bit sử dụng pop mà tôi có thể xem?

+3

Bạn nhận ra hướng dẫn dành cho 32-bit? Tôi tin rằng bạn có thể tạo mã 32 bit bằng cách đặt định dạng đầu ra thành 'elf32' thay vì' elf', cho phép bạn làm theo hướng dẫn này ngay cả trên máy tính 64 bit ... –

+0

@Aedin - Có, bạn nên ở chế độ 32 bit nếu làm theo hướng dẫn đó. Không chỉ là các tên đăng ký khác nhau khi sử dụng 64 bit, do đó cũng là các quy ước gọi điện. Chỉ cần thay thế 'pop' là không thể làm việc. –

Trả lời

14

Có, hướng dẫn 642 bit pop là ... POP. :-) Bạn cần phải sử dụng nó chống lại đăng ký 64-bit mặc dù (như rbx).

Các vấn đề liên quan