바닐라 커널 2.6.35에서 arch/mips/lib/csum_partial.S에있는 csum_partial() 함수 코드를 이해하려고합니다. 입력 길이가 8 바이트보다 작은 경우 버그가있는 것 같습니다. 내가 입력 길이가 인 경우에MIPS csum_partial
/*
* a0: source address
* a1: length of the area to checksum
* a2: partial checksum
*/
#define src a0
#define sum v0
.text
.set noreorder
.align 5
LEAF(csum_partial)
move sum, zero
move t7, zero
sltiu t8, a1, 0x8
bnez t8, .Lsmall_csumcpy /* < 8 bytes to copy */
move t2, a1
다음 여기에 기능이 시작 부탁 해요 이유는 그것이 합리적인 소리를하지 않는 것을 알고, 그건 미만 (8) 우리는 small_csumcpy에 뛰어 도달하지 명령을 이동하라, 맞지?. 그리고 거기에 우리가 가지고있다 :
.Lsmall_csumcpy:
move a1, t2
...
내 질문은 어디 t2 레지스터가 초기화됩니다! 미리 감사드립니다. 다음 코드
참고 : QtSpim/Spim/Mars와 같은 대부분의 시뮬레이터에는 분기 옵션이 지연되어 있지만 대개 비활성화됩니다. 설정/옵션 대화 상자에서 수동으로 활성화해야합니다. – Wiz
감사! 내 대답을 편집했습니다. – markgz
와우, 정말 고마워! 나는 들여 쓰기와 일반적인 논리로 인해 분기 후에 명령이 어떻게 든 실행되고 있다고 생각했지만, 내가 물어 본 모든 사람들은 이것이 일어날 수 없다고 나에게 말했다. 다시 한 번 감사드립니다! – alexa