2016-11-16 10 views
0

내가 어셈블리의 개념에 거의 새로운 오전, 나는 몇 가지더 많은 참조를 얻으려면 어셈블리를 수정하는 방법?

 1)modify the code above to handle vectors with 96 elements. 
    2)How can i know the data reference generated. 
    3)How can i know the instruction reference generated 

Y가 + Y. 벡터 X와 Y는 *를 =를 포함하는 X 벡터를 완수하기 위해 집중해야한다 어디에서 어떻게 알고 싶어 96 double은 각각 float이고, 주소 Rx와 Ry에 각각 저장됩니다. double float은 8 바이트 (64 비트)를 사용합니다.

L.D F0, a 
    ADDI R4, Rx, #512 : last address to load 

Loop: L.D F2, 0(Rx)   : load X(i) 
     MUL.D F2, F2, F0   : a x X(i) 
     L.D F4, 0(Ry)   :load Y(i) 
     ADD.D F4, F4, F2   : a x X(i) + Y(i) 
     S.D F4, 0(Ry)   : store into Y(i) 
     ADDI Rx, Rx, #8  : increment index to X 
     ADDI Ry, Ry, #8   : increment index to Y 
     SUB R20, R4, Rx  : compute bound 
     BNEZ R20, Loop  : check if done 
+3

안녕하세요 Smple_V 님, 도와 드리고 싶지만 같은 학교/대학에 다니지는 않을 것입니다. 이와 같이, 교사/교수가 * 명령어 참조 생성 * (및 * 데이터 참조 *)에 의해 의미하는 것은 자기 제한적 문제에서 이해할 수있는 것으로 변환되어야합니다. 간단히 말해서 : 나는 당신이 무엇을 요구하고 있는지 모른다. –

답변

0

대략 1)

코드가 "루프"가 레지스터가 64 비트를 포함 할 수 있다고 가정하고, CPU는로드 할 수/하나만 주소 (참조)를 생성하여 더블 플로트를 저장한다. BNEZ R20, Loop 명령어는 R20이 0이 아닌 Loop: 레이블 다음의 명령어로 실행 흐름을 변경합니다.

따라서 먼저 R20의 값을 계산하는 방법과 루프를 실행할 횟수를 알아야합니다.

몇 가지 힌트를 드리 자면, 원하는 96에 가까운 두 가지 값의 좋은 점이 있습니다. 포인터를 계산하는 방법과 8 바이트 요소 크기에 대한 정보가 왜 필요한지 이해해야합니다. 중대한.

그런 다음 소스에서 한 상수를 96 회 반복하도록 조정할 수 있습니다.