2012-06-08 24 views
11

NASM following this tutorial (bölüm 4) kullanarak daha dürüst bir dünya üzerinde çalışıyorum. Bu öğretici temel olarak komut satırı girişini nasıl ele alacağınızı öğretir.pop Talimat, NASM kullanarak 64-bit modda desteklenmiyor mu?

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 

kod hataları üzerinden en az 3 pop talimatlarına atıfta error: instruction not supported in 64-bit mode ile derleme sırasında:
Bu, söz konusu kod snippet'idir. Upon viewing the docs öyle görünüyor ki bu kod sadece 32 bit sistemler için çalışıyor.

64 bit pop talimatı var mı? Bakabileceğim pop'u kullanarak 64 bit dersi var mı?

+3

Öğreticinin 32 bit olduğunu biliyor musunuz? Çıktı formatını "elf" yerine "elf" yerine ayarlayarak 32 bit kod oluşturabileceğinizi düşünüyorum, bu da 64 bitlik bir makinede bile bu eğiticiyi takip etmenizi sağlar ... –

+0

@Aedin - Evet Bu eğiticiyi izlerseniz 32 bit modunda kalın. Kayıt isimleri sadece 64 bit kullanıldığında farklı değildir, aynı zamanda çağrı kuralları da vardır. Sadece 'pop' yerine geçmek işe yaramıyor. –

cevap

14

Evet, 64 bit pop talimatı ... POP. :-) Bunun için 64 bit kayıtlara karşı kullanmalısınız (rbx gibi).

İlgili konular