본문 바로가기
학부공부/Logic Design & Computer Architecture

6. ARM instruction 분석 report [Computer Architecture]

by sonpang 2021. 12. 2.
반응형

6.1. Converting to binary

 

Goal : Analysis of the instruction at addresses 000~024 in the instruction file (inst_data.mif)

 

After converting to binary, check which instruction is through the reference file.

TABLE 1. Converting to binary

 

6.2. Instruction meaning analysis

Describe what the instruction means with [Instruction set manual of ARM](URL reference included in the provided specification) and [ARM Architecture Reference Manual DDI 0100E](Intel)

TABLE 2_1. Standard example of analysis
TABLE 2_2. Standard example of analysis
TABLE 3_1. Instruction meaning analysis
TABLE 3_2. Instruction meaning analysis

 

 

6.3. Actual operation sequence according to the analyzed meaning

TABLE 4. Order of operation

Basic analysis was performed on all instruction types derived from [Table 1. Converting to binary] in the same format by referring to the analysis process in 60-62p of the provided PPT[2020 Computer Architecture Project]. The results can be seen in [Table 2. Standard example of analysis]. Based on this, we summarized the meaning of each instruction in [Table 3. Instruction meaning analysis]. Lastly, how the actual flow of operation is done is written in [Table 4. Order of operation]. (It is specified where the operation requested in the specification ends or if it does not end, from where to where it is repeated.) Specifically shaded parts It can be seen that this repetition is related.

 

PC(Program Counter)가 000부터 시작한다고 가정하면, 000번 명령어의 Cond이 1110(ignored : Always)이므로 생성된 Branch target address인 008번으로 이동한다. 이동한 008번부터 021번까지는 Conditional or Unconditional brach 명령어가 없으므로 순차적으로 실행된다.

 

008번 instruction을 실행하면 2번 register에 메모리(target address : 15번 register의 값에 #0xEC8을 더하여 생성)로부터 읽어온 값을 저장한다. 009번 instruction을 실행하면 0번 register에 #0x40값을 저장한다. 00A ~ 00F번 instruction은 모두 0번 register의 값을 메모리에 저장하는 명령이다. 이때 2번 register의 값을 base address로 하여 Offset값만 4씩 늘어난다. 010번 instruction은 0번 register에 #0x3F값을 저장한다. 011번 instruction은 010번 instruction에서 저장한 0번 register에 있는 값을 메모리에 저장한다. 012번 instruction은 0번 register에 #0x08값을 저장한다. 013번 instruction은 2번 register의 값에 #0x02C값을 더한 주소의 값을 가진 메모리에 0번 register의 값을 저장한다. 014번 instruction과 015번 instruction은 15번 register의 값에 각각 #0xE9C값과 #0x000값을 더한 주소의 값을 메모리로부터 읽어 와서 3번 register, 1번 register에 저장한다. 016번 instruction은 3번 register의 값에 #0x000값을 더한 주소의 값을 가진 메모리에 1번 register의 값을 저장한다. 017번 instruction은 15번 register의 값에 #0xE98값을 더한 주소의 값을 메모리로부터 읽어 와서 9번 register에 저장한다. 018번 instruction은 8번 register에 #0x00을 저장한다. 019 ~ 01F번 instruction은 모두 8번 register의 값을 메모리에 저장하는 명령이다. 이때 9번 register의 값을 base address로 하여 Offset값만 4씩 늘어난다. 020번 instruction은 15번 register의 값에 #0xE78값을 더한 주소의 값을 메모리로부터 읽어 와서 13번 register에 저장한다. 021번 instruction은 3번 register의 값에 #0x200값을 더한 주소의 값을 메모리로부터 읽어 와서 1번 register에 저장한다. 1번 register의 값을 022번 instruction에서 #0x01값과 비교하게 된다.

 

023번 명령어에서Case a에 해당하면 025번 명령어로 이동하나 025번 주소부터의 instruction은 본 보고서에서 분석하지 않았기 때문에 논외로 한다. 023번 주소의 명령어에서 Case b에 해당하면 024번 주소로 이동 후 다시 021번 명령어로 이동하게 된다. 021번 명령어부터 024번 명령어를 반복하게 되므로 일종의 반복문(loop)이다. 이때, 1register의 값이 21번 명령어에 의해 update되는데, 만약 그 값이 1(0x01)update 된다면 해당 반복문(loop)을 탈출하게 된다.(Case a에 해당하여 025번 명령어를 실행하게 된다.)

 

 

 

부록([TABLE 2. Standard example of analysis]에 따라 000 ~ 024번 instruction을 정리)

반응형

댓글