부동 소수점 레지스터를 스택에 저장해야합니다.
fsave 명령을 사용하려고했습니다.어셈블리에서 16 바이트 정렬 주소를 얻는 방법
fsave (%esp)
을하지만 인수 FSAVE로 16 바이트로 정렬 된 주소를 사용
나는 다음을 수행합니다.
% esp에서 주소를 16 바이트로 정렬하는 방법을 알지 못합니다.
부동 소수점 레지스터를 스택에 저장해야합니다.
fsave 명령을 사용하려고했습니다.어셈블리에서 16 바이트 정렬 주소를 얻는 방법
fsave (%esp)
을하지만 인수 FSAVE로 16 바이트로 정렬 된 주소를 사용
나는 다음을 수행합니다.
% esp에서 주소를 16 바이트로 정렬하는 방법을 알지 못합니다.
사용하는 인텔 스타일 구문 : 16 바이트의 정렬 된 클리어 낮은 4 비트
push ebp ;save ebp
mov ebp,esp ;save esp in ebp
and esp,0fffffff0h ;round esp down to 16 byte boundary
sub esp,128 ;allocate multiple of 16 bytes
이것은 유용한 정보입니다. 만약 당신이 위의'fsave (% esp)'_를 수행하고 있다면, 기존 스택을 덮어 씁니다. stackpointer를 정렬 할 필요가 있지만 여기에도 스택을 할당해야 함을 잊지 마십시오 ... –
코드 예제가 업데이트되었습니다. 내 오래된 문서에 따르면 fsave는 최대 108 바이트를 절약 할 수 있지만 지금은 더 클 수 있습니다. – rcgldr
주소. – Michael
new = (이전 + 0xF) & (~ 0xF); –