मैं एक एक्स 64 एएसएम ब्लॉक में अपवाद उठाना चाहता हूं।मैं एएसएम ब्लॉक में अपवाद कैसे बढ़ा सकता हूं?
चलें मान मैं बहुत की तरह एक समारोह है:
function Example(Values: array of integer): integer;
asm
or rcx,rcx
jz @error
....
मैं जानता हूँ कि मैं सिर्फ सूचक पढ़ सकते हैं और एक ए वी प्राप्त कर सकते हैं, हालांकि मैं एक और वर्णनात्मक त्रुटि को बढ़ाने के लिए चाहते हैं।
मैं एक अतिरिक्त समारोह बनाने के लिए और कॉल एक है कि हो सकता है:
asm
or rcx,rcx
jz @error
....
@error:
mov ecx, 1
mov rdx, ErrorString
jmp RaiseError
....
function RaiseError(code: integer; const Msg: string);
begin
case code of
1: raise EEmptyArrayError.Create(Msg);
हालांकि त्रुटि तो समारोह है, जिसमें कारण होता था बाहर हो जाएगा। मैं Example
फ़ंक्शन के अंदर से उत्पन्न होने के लिए अपवाद कैसे प्राप्त करूं (प्रतीत होता हूं)।
ध्यान दें कि यह X64 है, इसलिए X86 पर लागू होने वाले सभी एसईएच उत्तर अच्छे नहीं हैं क्योंकि X64 VEH का उपयोग करता है।
मुझे लगता है कि यह अभी भी x64 में एसईएच है। और बस कुछ पास्कल लिखें और देखें कि संकलक इसे कैसे काम करता है। –
चूंकि कोई और पूछने वाला नहीं है, अगर कोड इतना उच्च स्तर है कि आप इसे अपवाद उठाना चाहते हैं, तो आप इसे पहले स्थान पर क्यों लिख रहे हैं? – alcalde
क्योंकि इसे एसएसई निर्देशों की आवश्यकता है, और मेरे पास एसएसई-इंट्रिनिक्स नहीं है। – Johan