क्या एलआईए निर्देश नकारात्मक विस्थापन का समर्थन करता है?असेंबली सूचक अंकगणित एलआईए निर्देश
mov rax, 1
lea rsi, [rsp - rax]
मैं त्रुटि मिली जब मैं अपने एएसएम फ़ाइल में उपरोक्त कोड का उपयोग करें:
$ nasm -f macho64 test.asm
$ error: invalid effective address
मैं यह जान लें कि हम सी में कुछ इस तरह कर सकते हैं:
void foo(char *a, size_t b) {
*(a - b) = 1;
}
तो
मैं मान लें कि:
lea rsi, [rsp - rax]
काम करेगा ।
और मैं भी देखने के लिए का उपयोग करके जीसीसी संकलक करना क्या प्रयास करें:
$ gcc -S foo.c // foo.c has the function foo(above) in it
लेकिन मेरे एएसएम knowleage काफी मेरे लिए जीसीसी संकलक से एएसएम उत्पादन समझ में नहीं आता है।
lea rsi, [rsp - rax] ;; invalid effective address
काम नहीं करता:
किसी को भी क्यों की व्याख्या कर सकते। और मैं इन samething प्राप्त करने के लिए उपयोग कर रहा हूँ:
;; assume rax has some positive number
neg rax
lea rsi, [rsp + rax]
neg rax
या
sub rsp, rax
mov rsi, rsp
add rsp, rax
यह कर का एक और अधिक मानक तरीका क्या है?
मैं एनएएसएम संस्करण 2.11.08 पर मैक OSX 26 नवंबर 2015 को संकलित 10.11
आपकी मदद के लिए अग्रिम रूप से धन्यवाद का उपयोग कर रहा हूँ!
क्योंकि सीपीयू इस प्रकार के ऑपरेशन का समर्थन नहीं करता है? – MikeCAT
'mov rsi, rsp \ sub rsi, rax' – harold
@MikeCAT के बारे में कैसे पर्याप्त है, आप इसे उत्तर के रूप में बना सकते हैं। धन्यवाद! – user62453