나는 this 주제를 읽은 후에도 약간 혼란 스럽다. 다음 C++ 표현식 *d++ = ~(*d);
이 잘 정의되어 있습니까? 그렇습니다. 이처럼 복잡한 표현은 추한 것입니다. 나는 쓰지 않았습니다.잘 정의 된 코드입니까?
*d = ~(*d);
d++;
조립 :
*d++ = ~(*d);
0x83384 LDR R3,[R0 <d>,4] <<diff
0x83388 ADD R1 <c>, R1 <c>, 1
0x8338c MVN R3, R3
0x83390 STR R3,[R0 <d>],4
감사
*d = ~(*d);
d++;
0x83384 LDR R3,[R0 <d>]
0x83388 ADD R1 <c>, R1 <c>, 1
0x8338c MVN R3, R3
0x83390 STR R3,[R0 <d>],4
대 내가 그것을 비교할 때
내가 생성 된 어셈블리의 약간의 차이를 볼!
모든 특정 어셈블러가이 특정 컴파일러의 특정 버전이이 특정 시간에 사용한 설정으로 무엇인지 알려주려고합니다. 그것은 표준에 의해 보장되는지 아닌지를 말하지 않습니다. –
감사합니다. 처음에는 컴파일러가이 질문의 컨텍스트에서 생성 된 내용을 확인하는 것이 도움이 될 것이라고 생각했습니다. 나는 정의되지 않은 경우에 잠재적으로 생성 된 것을 볼 수있다. – Mav3rick