@ zero_extendqisi2의 의미
@ zero_extendqisi2
gcc 어셈블리 출력 의 실제 의미 와 사용법 이 궁금 합니다. 나는 qisi가 무엇을 의미하는지 또는 그 라인을 따라 무엇을 찾을 수 없었습니다.
컨텍스트를 위해 라인은 ldrb r3, [fp, #-9] @ zero_extendqisi2
GCC로 컴파일 된 Raspberry Pi Zero W의 ARM입니다. 예를 들어, 최적화를 사용하지 않고 옵션이없는 GCC9.2를 사용 하여 unsigned char
로 변환 int
하여을 다시로드 할 때 .https://godbolt.org/z/7xnfqh. 이전 GCC는 Godbolt (4.5)에서 가장 초기에 이르렀으며 아마도 이전에는 동일한 주석을 인쇄했을 것입니다.
답변
이것은이다 RTL의 에 포함 명령 이름, GCC의 내부 설명서의 표준 이름 목록 에서 zero_extendmn2
. 다음 m,n
은 각각 바이트 및 32 비트 정수인 머신 모드 qi
및 si
입니다. 따라서 이것은 바이트 (여기서는 메모리에서로드 됨)를 가져와 32 비트 정수 (여기서는 레지스터 r3에서)로 0 확장하는 명령어를 생성한다는 GCC의 표시입니다. 정확히 ARM ldrb
명령어가하는 일입니다.
나는 2가 무엇을 의미하는지 모르지만 분명히 GCC의 명명 규칙의 일부입니다.
Peter가 지적했듯이 GCC가 어셈블리에 이러한 주석을 포함하는 것은 약간 이상합니다 -fverbose-asm
. 실제로 주석은 시스템 설명 파일 .NET Framework에서 템플릿 문자열의 일부로 코딩됩니다 arm.md. 일부 GCC 개발자가 추가 한 다음 제거하는 것을 잊은 디버깅 보조 도구 일 수 있습니다.
(과제를 위해 제출하는 경우이 게시물을 올바르게 인용하십시오.)