Ошибка сегментации Push / Pop в сборке x86
я используюelf64 скомпилировать мой код сборки x86: у меня есть эта подпрограмма:
printNumber:
mov EAX, EDX ; EDX contain some value like "35"
mov ESI, 10 ; to divide by 10
MOV ECX,0 ; counter
whileDiv:
cmp EAX, 0
je endWhileDiv
xor rdx, rdx ; clean RDX
idiv ESI ; EAX=EAX/10 and EDX = EAX%10
push rdx ; this line generate a segmentation fault
add ECX, 1; count how many items i has added into stack
jmp whileDiv
endWhileDiv:
ret
Я пытаюсь вставить все цифры числа в мой стек, используя push, но у меня ошибка сегментации. Когда я комментирую эту строку:
push rdx ; this line generate a segmentation fault
Я больше не буду принимать «Ошибка сегментации»
Я использую «push rdx» вместо «push EDX», потому что я использую 64-битный режим в NASM, и когда я пытаюсь использовать: «push EDX», я получаю эту ошибку: «инструкция не поддерживается в 64-битной Режим"
Пожалуйста, кто-нибудь может подсказать, почему это происходит и как решить?
PS: извините за мой плохой английский