2.1 ) ๋‹ค์Œ C๋ฌธ์žฅ์„ ์œ„ํ•œ LEGv8 ์–ด์…ˆ๋ธ”๋ฆฌ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ผ. C๋ณ€์ˆ˜ f,g,h๋Š” ๋ ˆ์ง€์Šคํ„ฐ X0, X1, X2์— ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค. ์ตœ์†Œ ๊ฐœ์ˆ˜์˜ ์–ด์…ˆ๋ธ”๋ฆฌ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ผ.

           f = g + ( h - 5 ) ;

 

add f, h, -5

add f, f, g

//h์™€ -5๋ฅผ ๋”ํ•˜๊ณ  ์ด๋ฅผ ๋‹ค์‹œ g๋ž‘ ๋”ํ•œ๋‹ค.

 

 

2.3 ) ๋‹ค์Œ C๋ฌธ์žฅ์— ํ•ด๋‹นํ•˜๋Š” LEGv8 ์–ด์…ˆ๋ธ”๋ฆฌ ์ฝ”๋“œ๋Š”? C๋ณ€์ˆ˜ f, g, h, i, j๋Š” ๋ ˆ์ง€์Šคํ„ฐ X0, X1, X2, X3, X4์— ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค. ๋ฐฐ์—ด A์™€ B์˜ ์‹œ์ž‘ ์ฃผ์†Œ๋Š” ๋ ˆ์ง€์Šคํ„ฐ X6๊ณผ X7์— ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค.

B[8] = A[i - j];

 

SUB x9, x3, x4 //์ž„์˜์˜ x9๋ ˆ์ง€์Šคํ„ฐ์— i-j ๋ฅผ ํ•ด์คŒ

LDUR x9, [x6, x9] // A๋ฐฐ์—ด์ด ์‹œ์ž‘ ์ฃผ์†Œ๊ฐ€ x6์ด๊ณ , i-j๊ฐ€ x9์— ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ A[i-j]๋ฅผ ์–ป์Œ

STUR X9, [x7, #64] // B[8]์— ์ €์žฅ.

 

 

 2.4) ์•„๋ž˜ LEGv8 ์–ด์…ˆ๋ธ”๋ฆฌ ๋ช…๋ น์–ด ์‹œํ€€์Šค์— ๋Œ€์‘ํ•˜๋Š” C๋ฌธ์žฅ์€? ๋ณ€์ˆ˜ f, g, h, i, j๋Š” ๋ ˆ์ง€์Šคํ„ฐ x0, x1, x2, x3, x4์— ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค. ๋ฐฐ์—ด A์™€ B์˜ ์‹œ์ž‘์ฃผ์†Œ๋Š” ๋ ˆ์ง€์Šคํ„ฐ X6๊ณผ x7์— ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค.

 

 B[g] = A[f] + A[1+f];

 

 

2.7) 0xabcdef12๋ฅผ ์‹ญ์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜๋ผ.

 

๋จผ์ € abcdef12๋ฅผ 2์ง„์ˆ˜๋กœ ๋ฐ”๊พธ๊ณ  ์ด๋ฅผ 10์ง„์ˆ˜๋กœ ๋ฐ”๊พธ๋ฉด 2882400018์ด ๋‚˜์˜จ๋‹ค.

 

 

 

2.11) ๋ž˜์ง€์Šคํ„ฐ X0๊ณผ X1์ด ๊ฐ’ 0x8000000000000000๊ณผ 0xD000000000000000 ์„ ๊ฐ–๊ณ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค.

           2.11.1) ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์ˆ˜ํ–‰ํ•œ ํ›„์˜ X9 ๊ฐ’์€?

                     Add X9, X0, X1

x0์„ ์ด์ง„์ˆ˜๋กœ ๋ฐ”๊พธ๋ฉด 1000000000000000000000000000000000000000000000000000000000000000(2)์ด ๋˜๊ณ ,

x1์˜ ๊ฐ’์„ ์ด์ง„์ˆ˜๋กœ ๋ฐ”๊พธ๋ฉด 1101000000000000000000000000000000000000000000000000000000000000(2)์ด ๋œ๋‹ค.

์ด ๋‘๊ฐœ๋ฅผ ๋”ํ•˜๋ฉด 0101000000000000000000000000000000000000000000000000000000000000์ด ๋จ์œผ๋กœ,

X9์˜ ๊ฐ’์€ 0x5000000000000000 ์ด๋‹ค.

 

           2.11.2) x9๊ฐ’์ด ์›ํ•˜๋˜ ๊ฐ’์ธ๊ฐ€, ์•„๋‹ˆ๋ฉด ์˜ค๋ฒ„ํ”Œ๋กœ๊ฐ€ ์ผ์–ด๋‚ฌ๋Š”๊ฐ€?

          

์˜ค๋ฒ„ํ”Œ๋กœ๊ฐ€ ์ผ์–ด๋‚ฌ๋‹ค.

 

           2.11.3) ๋ ˆ์ง€์Šคํ„ฐ x0๊ณผ x1 ๊ฐ’์ด ์œ„์™€ ๊ฐ™์„ ๋•Œ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์ˆ˜ํ–‰ํ•œ ํ›„์˜ x9 ๊ฐ’์€?

                     SUB X9, X0, X1

 

1011000000000000000000000000000000000000000000000000000000000000์ด ๋จ์œผ๋กœ, x9์˜ ๊ฐ’์€ 0xB000000000000000 ์ด๋‹ค.

 

           2.11.4) x9๊ฐ€ ์›ํ•˜๋˜ ๊ฐ’์ธ๊ฐ€, ์•„๋‹ˆ๋ฉด ์˜ค๋ฒ„ํ”Œ๋กœ๊ฐ€ ์ผ์–ด๋‚ฌ๋Š”๊ฐ€?

 

์›ํ•˜๋˜ ๊ฐ’์ด๋‹ค. ์˜ค๋ฒ„ํ”Œ๋กœ๊ฐ€ ์ผ์–ด๋‚˜์ง€ ์•Š์•˜๋‹ค.

 

           2.11.5) ๋ ˆ์ง€์Šคํ„ฐ x0๊ณผ x1 ๊ฐ’์ด ์œ„์™€ ๊ฐ™์„ ๋•Œ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์ˆ˜ํ–‰ํ•œ ํ›„์˜ x9 ๊ฐ’์€?

                     Add X9, X0, X1

                     ADD X9, X9, X0

 

0x5000000000000000 ์—๋‹ค x0์„ ๋”ํ•˜๋ฉด x9 ์˜ ๊ฐ’์€ 0xD000000000000000์ด ๋œ๋‹ค.

 

           2.11.6) X9๊ฐ’์ด ์›ํ•˜๋˜ ๊ฐ’์ธ๊ฐ€, ์•„๋‹ˆ๋ฉด ์˜ค๋ฒ„ํ”Œ๋กœ๊ฐ€ ์ผ์–ด๋‚ฌ๋Š”๊ฐ€?

 

์˜ค๋ฒ„ํ”Œ๋กœ๊ฐ€ ์ผ์–ด๋‚ฌ๋‹ค.

 

 

 

2.13) ๋‹ค์Œ ์ด์ง„์ˆ˜์— ํ•ด๋‹นํ•˜๋Š” ์–ด์…ˆ๋ธ”๋ฆฌ ๋ช…๋ น์–ด ์ข…๋ฅ˜์™€ ๋ช…๋ น์–ด๋Š”?

           1000 1011 0000 0000 0000 0000 0000 0000(two)

 

10001011000์ด  add๋ฅผ ๋œปํ•˜๊ณ  ์–ด์…ˆ๋ธ”๋ฆฌ ๋ช…๋ น์–ด ์ข…๋ฅ˜๋Š” R ํƒ€์ž…์ด๋‹ค., ๋‚˜๋จธ์ง€ ํ•„๋“œ๋Š” 0์ด๊ธฐ์— ํ”ผ์—ฐ์‚ฐ์ž๋“ค๊ณผ ์ž๋ฆฌ์ด๋™์€ ์—†๋‹ค.

์ฆ‰, ์–ด์…ˆ๋ธ”๋ฆฌ ๋ช…๋ น์–ด๋กœ ํ‘œํ˜„ํ•˜๋ฉด add 0, 0, 0 ์ด๋‹ค.

 

 

 

2.18) ๋ ˆ์ง€์Šคํ„ฐ๊ฐ’์ด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค.

           X10 = 0x00000000AAAAAAAA, X11 = 0x1234567812345678

(2์ง„์ˆ˜๋กœ ๋ฐ”๊พธ๋ฉด x10 = 10101010101010101010101010101010,

x11 = 1001000110100010101100111100000010010001101000101011001111000)

 

           2.18.1) ๋ ˆ์ง€์Šคํ„ฐ ๊ฐ’์ด ์œ„์™€ ๊ฐ™์„ ๋•Œ ๋‹ค์Œ ๋ช…๋ น์–ด ์‹œํ€€์Šค ์‹คํ–‰ ํ›„ X12๊ฐ’์€ ์–ผ๋งˆ์ธ๊ฐ€?

           LSL X12, X10, #4

           ORR X12, X12, X11

          

x10์˜ ๊ฐ’์„ ์™ผ์ชฝ์œผ๋กœ 4์นธ ์ด๋™ํ•˜๋ฏ€๋กœ 10101010101010101010101010100000์ด ๋˜๊ณ , ์ด๋Š” 0xAAAAAAAA0์ด๋‹ค.  ์ด๋ฅผ x11๊ณผ or ์—ฐ์‚ฐ์„ ํ•˜๋ฉด x12์˜ ๊ฐ’์€  0x1234567ABABEFEF8์ด ๋œ๋‹ค.

 

           2.18.2) ๋ ˆ์ง€์Šคํ„ฐ ๊ฐ’์ด ์œ„์™€ ๊ฐ™์„ ๋•Œ ๋‹ค์Œ ๋ช…๋ น์–ด ์‹คํ–‰ ํ›„ X12 ๊ฐ’์€ ์–ผ๋งˆ์ธ๊ฐ€?

           LSL X12, X11, #4

          

x11์˜ ๊ฐ’์„ ์™ผ์ชฝ์œผ๋กœ 4๋ฒˆ shiftํ•˜๋ฉด x12์˜ ๊ฐ’์€ 0x2345678123456780 ์ด ๋œ๋‹ค.

 

           2.18.3) ๋ ˆ์ง€์Šคํ„ฐ๊ฐ’์ด ์œ„์™€ ๊ฐ™์„ ๋•Œ ๋‹ค์Œ ๋ช…๋ น์–ด ์‹œํ€€์Šค ์‹คํ–‰ ํ›„ X12๊ฐ’์€ ์–ผ๋งˆ์ธ๊ฐ€?

LSL X12, X10, #3

           ANDI X12, X12, 0xFEF

 

x10์˜ ๊ฐ’์„ ์™ผ์ชฝ์œผ๋กœ 3๋ฒˆ shiftํ•˜๋ฉด 0x555555550์ด ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋ฅผ 0xFEF(111111101111)๋ฅผ ANDI ์—ฐ์‚ฐ์„ ํ•˜๋ฉด x12์˜ ๊ฐ’์€ 0x540(010101000000)์ด ๋œ๋‹ค.

 

 

 

2.26) ๋‹ค์Œ C์ฝ”๋“œ๋ฅผ LEGv8 ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•˜๋˜ ์ตœ์†Œ ๊ฐœ์ˆ˜์˜ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ผ. ๋ณ€์ˆ˜ a, b, i, j๋Š” ๋ ˆ์ง€์Šคํ„ฐ x0, x1, x10, x11์— ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค. ๋ฐฐ์—ด D์˜ ์‹œ์ž‘ ์ฃผ์†Œ๋Š” ๋ ˆ์ง€์Šคํ„ฐ x2์— ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค.

           for (i=0; i<a; I++)

                     for (j=0, j<b; j++)

                                D[4*j] = i + j;

 

        add X10, X10, $zero              # i = 0

        add X11, X11, $zero                # j = 0

L1 :      slt X12, X10, X0                    # i<a

        beq X12, $zero, EXIT    # if X12 == 0, Exit

        add X11, $zero, $zero # j=0

         addi X10, X10, $1                 # i ++

L2 :      slt X13, X11, X1                 # j<b

          beq X13, $zero, L1,               # if $t3 == 0, goto L1

          add X14, X0, X11                          # $t4 = i+j

          muli X15, X11, $4                         # $t5 = $t1 * 4

           sll X15, X15,$2                   # $t5 << 2

          add X15, X15, X2                          # D + $t5

          sw X14, X15(X2)                   # store word $t4 in addr $t5(D)

          addi X10, X11, $1                 # j ++

           j L2                             # goto L2

EXIT :

 

728x90
๋ฐ˜์‘ํ˜•
Liky