내 C 코드에 인라인 ARM 어셈블리를 작성하고 싶습니다. 이 코드에서는 함수에 입력 및 출력으로 선언 된 것 이상으로 레지스터 또는 두 개 이상의 레지스터를 사용해야합니다. GCC에 계산을 위해 여분의 레지스터를 사용할 것이라고 clobber 목록을 사용하는 방법을 알고 있습니다.GCC에서 인라인 ARM 어셈블리를 사용할 때 사용되는 레지스터 최적화
그러나 GCC는 어떤 레지스터가 최적화 될 때 어떤 레지스터를 사용하는지에 대해 자유롭게 움직일 수 있다고 확신합니다. 즉, 계산을 위해 고정 된 레지스터를 사용하는 것은 좋지 않은 생각입니다.
고정 레지스터를 사용하지 않고도 인라인 어셈블리의 입력이나 출력이 아닌 추가 레지스터를 사용하는 가장 좋은 방법은 무엇입니까?
P. 나는 더미 출력 변수를 사용하는 것이 트릭을 할 수 있다고 생각했지만 어떤 종류의 이상한 효과가 있을지 확신하지 못했습니다. ...
나는 이것을 직접적으로 가능하다고 생각하지만, C 전문가가 이것을 대답하게 할 것입니다. :-) – Noldorin
나는 당신이 레지스터 앨리어스 (alias)를 사용할 수 있고 컴파일러가 어떤 레지스터를 사용하고자하는지 선택할 수 있지만 그 문법을 기억할 수는 없다는 것을 알고있다. 또는 탄환을 물고 단지 .s 파일을 작성하여 융통성있게 별도로 조립할 수도 있습니다. –
@MichaelDorgan 귀하의 의견을 보내 주셔서 감사합니다. 나는 입출력 레지스터가 그런 식으로 작동한다는 것을 알고 있지만 임시 레지스터에 사용되는 것을 보지 못했습니다. 두 번째 해결 방법은 내가 필요로하는 것과 반대입니다. 더 많은 최적화 옵션을 제거합니다 입력 및 출력 레지스터 지정) ... – Madcowswe