어셈블리 언어의 메서드에서 값을 반환하는 방법에 대해 약간 혼란 스럽습니다. 내가 아는 한, eax 레지스터는 반환 될 결과를 저장하는 데 사용됩니다. 예를 들어 eax (IA-32 어셈블리 언어)로 결과 반환
내 결과는 4라고 내가 사용mov eax, 4
지금 EAX 4를 가지고 있고이 방법을 반환합니다. 제가해야 할 일이 있습니까, 아니면 ret
의 지시가 자동으로 결과를 돌려 줄 것입니까?
문제는 내가 ret
을 사용할 때 발신자에게로 돌아가고 발신자가 결과를 저장 한 레지스터에 자유롭게 액세스 할 수 있기 때문에 레지스터 eax
에 대해 특별한 것을 알지 못한다는 것입니다. ebx
또는 ecx
을 대신 결과를 저장할 수 없었습니까?
나는이 특별한 관례가 GCC 이상을 포함하여 좀더 널리 퍼져 있다고 생각했다. 이 규칙을 사용하지 않는 일반적인 컴파일러에 대해 알고 있습니까? –
Nope. 그러나 관례에 따라 가능한 것은 무엇이든합니다. –
@ Mr. Shickadance : 사용자 코드에서 호출 할 수는 없지만 일부 Delphi 컴파일러 도우미는 ZF를 사용하여 부울 결과를 반환합니다. –