질문은 AVR GCC 컨텍스트에 있습니다. 기능 이상C 함수 프로토 타이핑 및 .set 지시문
Mod_BigNum_by_u8: .global Mod_BigNum_by_u8
; c-prototype ==> uint8_t Mod_BigNum_by_u8(uint8_t * pBigNum, uint8_t ByteCount, uint8_t Divisor);
; Parameters
.set pBigNum, 24 ; (u16) pointer to the BigNum Dividend. Highbyte first
.set ByteCount, 22 ; (u8) number of bytes in the BigNum
.set Divisor, 20 ; (u8) Divisor
; Local Variables
.set BitCount, 23 ; (u8) Number of bits left in the current byte
.set CurrentByte, 21 ; (u8) Most recently used byte of BigNum
; Return value
.set Dividend, 24 ; (u16) result (we only need 8bits, but WinAVR requires 16)
...
(나는 "AVR-GCC로 컴파일"말을 생각) Atmel의 스튜디오에서 잘 작동 다음과 같이
나는 C 함수 프로토 타입 .S 파일이 있습니다.
GNU asm syntax
Syntax: .set symbol, expression
AVR asm
.SET label = expression
이는 GNU 구문이 사용됨을 의미합니다. 이제 내가 이해하려고하는 것은 - 그 상수 24, 22, 20은 C 함수 프로토 타이핑의 관점에서 무엇을 의미합니까? 주석은 함수 인자를 적재하고 있음을 암시합니다. 그러나 .set과 그 상수가 어떻게 발생하는지 이해하지 못합니다. 저는 params가 스택과 레지스터를 통과한다고 생각했습니다.
2 차 질문 - AVR은 GNU에서 파생 된 것이지만 실제로는 위와 같이 AVR asm과 GNU asm 구문을 혼용 할 수 있습니까?