나는 C 유사 의사 코드로 두 가지 간단한 명령어를 기술하는 가장 좋은 방법과 가장 짧은 방법을 피하려고 노력하고있다. 다음과 같이 추출 명령이 정의된다 :명령어 설명을위한 의사 코드
extract rd, rs, imm
이 명령어는 32 비트 소스 레지스터 RS로부터 적절한 바이트를 추출하고 바로 목적지 레지스터를 정당화. 바이트는 imm에 의해 지정되므로 은 0 (최하위 바이트에 대해)과 3 (최상위 바이트에 대해) 값을 취할 수 있습니다.
rd = 0x0; // zero-extend result, ie to make sure bits 31 to 8 are set to zero in the result
rd = (rs && (0xff << imm)) >> imm; // this extracts the approriate byte and stores it in rd
삽입 명령
는 역 동작으로 간주하고는 목적지 레지스터 RD의 적절한 바이트에 소스 레지스터 RS 석출물을으로부터 오른쪽 정렬 바이트가 소요 될 수) 다시,이 바이트가 IMM의 값에 의해 결정됩니다tmp = 0x0 XOR (rs << imm)) // shift the byte to the appropriate byte determined by imm
rd = (rd && (0x00 << imm)) // set appropriate byte to zero in rd
rd = rd XOR tmp // XOR the byte into the destination register
이 모든 조금 무서운 보이는, 그래서 나는 에 더 우아한 방법은 C 같은 스타일이 bahaviour을 설명 조금이 궁금해
많은 감사, 클로스
죄송합니다 ... RS 가장 중요한 바이트가 고려되지 않습니다 있는지 확인하는 0xFF로와 RD 마스크 오른쪽도하지만, "C와 같은 의사 코드"는 모순 어법이다. 의사 코드의 모든 이유는 공식 구문 대신 연산을 설명하기 위해 산문 및/또는 수학 표기법을 사용하여 컴퓨터에서 추상화하는 것입니다. –