Skip to content

seareale/MIPS-numberConversion

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

11 Commits
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

MIPS-numberConversion

MIPS assembly programming

"์š”๊ตฌ ๊ธฐ๋Šฅ"

ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋ฉด ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์„ ๋ฐ›๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฐ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ์ •์ˆ˜ ํ˜น์€ ์‹ค์ˆ˜๋ฅผ ์‹ญ์ง„์ˆ˜ ํ˜•ํƒœ๋กœ ์ž…๋ ฅํ•œ๋‹ค.

์˜ˆ1) Enter the number: 12345

์˜ˆ2) Enter the number: -293.1234

์‚ฌ์šฉ์ž๊ฐ€ ์—”ํ„ฐ๋ฅผ ์น˜๋ฉด ์ตœ์ข…์ ์œผ๋กœ๋Š” ํ™”๋ฉด์— ์ž…๋ ฅ๋œ ์ˆ˜์— ํ•ด๋‹นํ•˜๋Š” ์ด์ง„์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ์ž…๋ ฅ์ด ์ •์ˆ˜์ด๋ฉด integer word์˜ ์ด์ง„์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ์ž…๋ ฅ์ด floating point์ด๋ฉด 32-bit single precision floating point๋กœ ํ‘œํ˜„๋œ ์ด์ง„๋น„ํŠธ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ตœ์ข… ๊ฒฐ๊ณผ ์ถœ๋ ฅ ์ด์ „์— ๊ฐ ๋‹จ๊ณ„๋ณ„ ์ค‘๊ฐ„ ๊ฒฐ๊ณผ๋„ ์ถœ๋ ฅํ•œ๋‹ค. ๋‹จ๊ณ„์— ๋Œ€ํ•œ ์„ค๋ช…์€ ์•„๋ž˜๋ฅผ ์ฐธ๊ณ ํ•œ๋‹ค.

์˜ˆ1) Enter the number: 12345
     Input string: 12345
     Integer number detected
     Half of the input number: 6172
     Binary number: 0000 0000 0000 0000 0011 0000 0011 1001
     Hexa number: 00 00 30 39

์˜ˆ2) Enter the number: -293.1234
     Input string: -293.1234
     Floating point number detected
     Half of the input number: -146.5617
     Binary number: 1100 0011 1001 0010 1000 1111 1100 1100
     Hexa number: C3 92 8F CC

์‚ฌ์šฉ์ž ์ž…๋ ฅ์€ ์ •์ˆ˜์ธ ๊ฒฝ์šฐ word ํฌ๊ธฐ ์ด๋‚ด๋กœ ํ‘œํ˜„ ๊ฐ€๋Šฅํ•œ ์ˆซ์ž์ด๋ฉฐ FP์ธ ๊ฒฝ์šฐ 32 bit single precision ํ˜•ํƒœ๋กœ ํ‘œํ˜„ ๊ฐ€๋Šฅํ•œ ์ˆซ์ž๋ผ๊ณ  ๊ฐ€์ •ํ•œ๋‹ค. ์ถœ๋ ฅ์‹œ ์ด์ง„์ฝ”๋“œ๋Š” ๋ฐ˜๋“œ์‹œ 4๋น„ํŠธ๋งˆ๋‹ค ์ŠคํŽ˜์ด์Šค๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ํ—ฅ์‚ฌ์ฝ”๋“œ๋Š” ๋‘์ž๋ฆฌ๋งˆ๋‹ค ์ŠคํŽ˜์ด์Šค๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

"๋™์ž‘ ํ™˜๊ฒฝ"

์ฒจ๋ถ€๋œ MIPS emulator๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. Jar ํŒŒ์ผ์ด๋ฏ€๋กœ ์œˆ๋„์šฐ์ฆˆ ํ™˜๊ฒฝ์—์„œ ์ž๋ฐ”๋ฅผ ์„ค์น˜ํ•œํ›„ ์‹คํ–‰ํ•œ๋‹ค. ์„ฑ๊ณต์ ์œผ๋กœ MIPS emulator๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฐฝ์ด ๋œฌ๋‹ค.

๊ฒฐ๊ณผ

F3๋Š” ์†Œ์Šค์ฝ”๋“œ๋ฅผ assembleํ•˜๋Š” ๋‹จ์ถ•ํ‚ค์ด๋‹ค. F5๋Š” ์‹คํ–‰ํ•˜๋Š” ๋‹จ์ถ•ํ‚ค์ด๋‹ค. ์‹คํ–‰๊ฒฐ๊ณผ๊ฐ€ ํ•˜๋‹จ์˜ ์ฐฝ์— ์ถœ๋ ฅ๋˜๋ฏ€๋กœ ์—ฌ๊ธฐ์„œ ์ถœ๋ ฅ๋œ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์›น์— ์ˆ˜๋งŽ์€ tutorial ์ž๋ฃŒ๋“ค์ด ์žˆ์œผ๋ฏ€๋กœ ๊ฒ€์ƒ‰ํ•˜๋ฉด ์‰ฝ๊ฒŒ ์ž๋ฃŒ๋ฅผ ์ฐพ์„ ์ˆ˜๊ฐ€ ์žˆ๋‹ค.

๋ช‡ ๊ฐœ๋ฅผ ์ ์–ด๋ณด๋ฉด:

https://courses.cs.vt.edu/cs2506/Fall2014/Notes/L04.MIPSAssemblyOverview.pdf http://logos.cs.uic.edu/366/notes/mips%20quick%20tutorial.htm http://www.tfinley.net/notes/cps104/mips.html http://web.engr.oregonstate.edu/~walkiner/cs271-wi13/slides/05-AssemblyProgramming.pdf http://web.engr.oregonstate.edu/~walkiner/cs271-wi13/slides/07-MoreAssemblyProgramming.pdf http://web.engr.oregonstate.edu/~walkiner/cs271-wi13/code/Hello.asm http://web.engr.oregonstate.edu/~walkiner/cs271-wi13/code/Decls.asm http://web.engr.oregonstate.edu/~walkiner/cs271-wi13/code/Add3.asm http://web.engr.oregonstate.edu/~walkiner/cs271-wi13/code/Parrot.asm https://www.cs.ucsb.edu/~franklin/64/lectures/mipsassemblytutorial.pdf

ํŠนํžˆ, ์ฒซ๋ฒˆ์งธ ๋งํฌ์—์„œ์˜ hello world ์˜ˆ์ œ๋ฅผ ๋”ฐ๋ผ๊ฐ€ ๋ณด๋ฉด ์‰ฝ๊ฒŒ ์ฝ”๋”ฉ์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

"๊ตฌํ˜„ ์ˆœ์„œ"

๊ณผ์ œ ์ˆ˜ํ–‰์˜ ํŽธ์˜๋ฅผ ์œ„ํ•ด ์•„๋ž˜์™€ ๊ฐ™์ด ๋‹จ๊ณ„๋ณ„ ์ˆœ์„œ๋Œ€๋กœ ๊ตฌํ˜„ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ  ์ง„ํ–‰ํ•  ๊ฒƒ.

  • 1๋‹จ๊ณ„: ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ๋ฐ›๋Š” ๊ธฐ๋Šฅ - ์‚ฌ์šฉ์ž์—๊ฒŒ ์ž…๋ ฅ์„ ์š”๊ตฌํ•˜๊ณ  ๋ฐ›์€ ํ›„ string์œผ๋กœ ์ €์žฅํ•œ๋‹ค. ์ž…๋ ฅ์„ ๋ฐ›์„ ๋•Œ์—๋Š” "read string" syscall์„ ์‚ฌ์šฉํ•œ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•˜๋Š” ๊ฐ’์ด ์ •์ˆ˜์ธ์ง€ FP์ธ์ง€ ๋ฏธ๋ฆฌ ์•Œ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ "read integer"๋‚˜ "read float"๋Š” ์‚ฌ์šฉํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค.

  • 2๋‹จ๊ณ„: ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ •์ˆ˜์ธ์ง€ FP์ธ์ง€ ์ธ์‹

  • 3๋‹จ๊ณ„: ์ž…๋ ฅ๋œ ์ˆ˜ ๋ณ€ํ™˜ ๊ธฐ๋Šฅ - ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ์ˆ˜๋Š” text๋กœ ์ €์žฅ๋˜๋ฏ€๋กœ ์ด๋ฅผ ํ•ด์„ํ•˜์—ฌ word์ •์ˆ˜ ํ˜น์€ FPํ˜•ํƒœ์˜ ์ˆ˜๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ 123๋ฅผ ์ž…๋ ฅํ•œ ๊ฒฝ์šฐ ์ด๋Š” ๋‹จ์ˆœํžˆ character ASCII code ๋ฐฐ์—ด '1', '2'์™€ '3'์ด๋ฏ€๋กœ ์ด๋ฅผ ํ•˜๋‚˜์”ฉ ์ฝ์œผ๋ฉด์„œ ํ•˜๋‚˜์˜ register์—์„œ ์ •์ˆ˜๊ฐ’์„ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค. 1์„ ๋จผ์ € ์ €์žฅํ•˜๊ณ , ๋‘๋ฒˆ์งธ '2'๋ฅผ ๋ณผ๋•Œ 1์„ x10ํ•˜๊ณ  2๋ฅผ ๋”ํ•˜๊ณ , ๋งˆ์ง€๋ง‰์œผ๋กœ ์„ธ๋ฒˆ์งธ '3'์„ ๋ณด๋ฉด ์ด๋ฏธ ๊ณ„์‚ฐ๋œ ๊ฐ’์—์„œ x10์„ ํ•˜๊ณ  3์„ ๋”ํ•œ๋‹ค. ์‹ค์ˆ˜์ผ ๊ฒฝ์šฐ FP instruction์„ ์‚ฌ์šฉํ•˜์—ฌ ๋น„์Šทํ•œ ์ž‘์—…์„ ํ•œ๋‹ค.

  • 4๋‹จ๊ณ„: ์ด์ง„ ๋น„ํŠธ ์ถœ๋ ฅ ๊ธฐ๋Šฅ

  • 5๋‹จ๊ณ„: Hexa ์ฝ”๋“œ๋กœ ์ถœ๋ ฅ

๊ฐ ๋‹จ๊ณ„์˜ ๋™์ž‘์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋‹จ๊ณ„๋ณ„ ๊ฒฐ๊ณผ๋ฅผ ์œ„์—์„œ ์ด๋ฏธ ๋ณด์—ฌ์ค€ ์˜ˆ์‹œ์™€ ๊ฐ™์ด ์ถœ๋ ฅํ•œ๋‹ค. ๋‹จ, 3๋‹จ๊ณ„์˜ ๊ฒฐ๊ณผ๋Š” ์ž…๋ ฅ๋œ ๊ฐ’์„ 2๋กœ ๋‚˜๋ˆˆ ํ›„ ์ถœ๋ ฅํ•œ๋‹ค.

"์ฒจ๋ถ€ ํŒŒ์ผ"

"mars.jar ๋‹ค์šด๋กœ๋“œ"

Releases

No releases published

Packages

No packages published