| 여기는 저의 2004~2007년까지의 기록입니다. 이 블로그는 이제 Tistory로 옮겼습니다. 2008년부터의 기록은 http://blog.studioego.info 로 가시기 바랍니다. StudioEgo's Thoughts, seasonⅡ | ||||
|
(이 포스트는 코드 주석처리가 아직 안되었기 때문에 조만간 주석처리를 할 예정입니다:D)
제가 친구의 요청으로 졸지에 어셈블리 언어(Assembly Language)숙제를 하게 되었습니다. (제가 다른 교수님 숙제라고 소스 코드를 공개하지만 학과장님 수업 과제였다면 공개를 안했을 것입니다 캬캬) 제가 듣는 학과장님 수업이 아니라 박모교수님이 수업하시는 것 숙제를 해달라는 것이였습니다. SPARC Architecture, Assembly Language Programming, and C에 있는 연습문제 프로그래밍 해달라는 것이였습니다. 이것이 SUN사의 SPARC Machine에서만 돌아간다는 Assembly 언어 책입니다 -_-;; (책이 딱 한 종류밖에 없더군요) ![]() 여기서 다루는 Assembly언어는 SUN사의 SPARC Machine에서 실행되는 Assembly 언어 입니다. 다른 학교에서는 8051 Chip으로 Assembly 언어를 다루는데 .. 저희 과는 특이하게도 SUN사 SPARC Assembly를 다루더군요. (다음학기때는 전자전기공학부의 마이크로컴퓨터를 배워볼까나? - 어디서든지 많이 쓰는8051Chip에서 쓰는 Assembly를 배운다고 하네요.(선배가 학점따기 쉽다고 해서 들어볼까 생각중)) 연습문제 2장 문제 CHAPTER2. SPARC ARCHITECTURE 순간 머리가 멈칫... 그리고 어떻게 풀어야 할지 대략 감을 잡았습니다. C언어라면 금방 짰을 과제인데 =_= 근데 전 단순히 -2부터 8까지 값을 while loop로 돌려 넣어서 값을 찾아내게 했습니다. -2부터 8까지 값을 loop를 돌리면서 결과값을 Assembly code로 if else로 코드 짜는데 아래 코드는 최대한 최적화를 하게 만들었습니다. 아무짝에 쓸모없는 nop 명령어를 지워버릴려고 얼마나 노력을 많이 했는지 =_= 아래의 같은 코드 파일 : ex2_3.s .section ".data" fmt: .asciz "%d is %d\n" .section ".text" .global printf .global main main: save %sp, -96, %sp mov -2, %l0 .global loop loop: cmp %l0, 8 bg done nop mov %l0, %o0 call .mul mov 56, %o1 mov %o0, %l3 mov %l0, %o0 call .mul mov %l0, %o1 mov %o0, %l1 call .mul mov 14, %o1 mov %o0, %l4 mov %l1, %o1 call .mul mov %l0, %o0 mov %o0, %l2 add %l2, %l3, %l1 sub %l1, 64, %l1 sub %l1, %l4, %l1 ! output function call! set fmt, %o0 mov %l0, %o1 call printf mov %l1, %o2 add %l0, 1, %l0 bl loop nop done: mov 1, %g1 ta 0 자 작업을 다 했으면 컴파일을 해볼까요? [10/11(수) 03:56 cea5151@sol1] ~/assem/ch2$ gcc -g ex2_3.s -o ex2_3 gcc는 C 컴파일러이지만 어셈블리 언어도 컴파일이 됩니다. :D -o ex2_3 은 컴파일 한 결과물을 a.out으로 저장하지 말고 ex2_3이란 파일로 저장하라는 말입니다, -g ex2_3.s 는 ex2_3.s란 어셈블리 언어로 작성된 파일을 컴파일하는데 -g라는 옵션을 붙여서 컴파일 된 후 실행파일이 gdb가 소스 코드를 분석할 수 있게 컴파일을 하라는 것입니다 :D Solaris에서 작업을 했으면 아래의 에러가 안나고 아주 편하게 컴파일이 될 것입니다. 그러나 윈도우즈에서 작업을 해서 ftp로 올린다면 컴파일이 안된다고 gcc에서 에러를 쏟아냅니다. [10/11(수) 03:56 cea5151@sol1] ~/assem/ch2$ gcc -g ex2_3.s -o ex2_3 /usr/ccs/bin/as: "ex2_3.s", line 1: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 2: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 3: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 4: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 5: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 6: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 7: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 8: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 9: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 10: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 11: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 12: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 13: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 14: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 15: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 16: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 17: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 18: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 19: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 20: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 21: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 22: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 23: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 24: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 25: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 26: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 27: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 28: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 29: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 30: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 31: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 33: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 34: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 35: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 36: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 37: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 38: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 39: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 40: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 41: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 42: error: invalid character (0x0d) /usr/ccs/bin/as: "ex2_3.s", line 43: error: invalid character (0x0d) [10/11(수) 03:56 cea5151@sol1] ~/assem/ch2$ 제대로 타이핑을 했는데도 이런 이상한 일이 벌어짐을 알수 있습니다. 이 것은 윈도우즈에서 작업을 했기 때문에 파일 포맷이 windows로 되어 있게 저장된 것입니다. Solaris나 Unix, Linux같은 경우에는 파일 포맷을 UNIX로 쓰기 때문에 이런 결과가 나타나게 되는 것입니다. 이 문제를 해결하는 방법은 [10/11(수) 03:56 cea5151@sol1] ~/assem/ch2$ dos2unix -o -k ex2_3.s ex2_3.s dos2unix라는 프로그램을 실행시키는 것입니다. 이 명령어는 파일 포맷이 dos인 텍스트 파일을 UNIX 파일 포맷으로 바꿔준다는 말입니다. man보고 어떻게 실행하는지 알았습니다. 자세한 것은 man 명령어 쳐서 알아보시길 바랍니다 :D 아 컴파일을 해볼까요? [10/11(수) 03:56 cea5151@sol1] ~/assem/ch2$ gcc -g ex2_3.s -o ex2_3 [10/11(수) 03:56 cea5151@sol1] ~/assem/ch2$ 컴파일이 제대로 되었다는 것을 알았습니다. 그러면 실행을 해볼까요? [10/11(수) 03:56 cea5151@sol1] ~/assem/ch2$ ./ex2_3 -2 is -240 -1 is -135 0 is -64 1 is -21 2 is 0 3 is 5 4 is 0 5 is -9 6 is -16 7 is -15 8 is 0 [10/11(수) 03:56 cea5151@sol1] ~/assem/ch2$ 원하는 결과가 나왔습니다. 전 학과장님께서 가르쳐 주신 책에 없는 print 명령어를 써서 결과 값이 제대로 되었는지 알았다만... 박모 교수님 시간에는 숙제를 print 명령어 없이 하라고 했기 때문에... 어떻게 하는지 모르겠습니다. (gdb를 돌려서 해야하는가?) 이 프로그램을 C로 짠다면... C언어 Code : ex2_3.c #include <stdio.h> main() { int temp,i = -2; while (i <= 8) { temp = (i*i*i) - (14*i*i) + (56*i) - 64; printf("%d is %d\n",i, temp); i++;} } 결과값은 아까 전의 Assembly code랑 같습니다 =_= -2 is -240 -1 is -135 0 is -64 1 is -21 2 is 0 3 is 5 4 is 0 5 is -9 6 is -16 7 is -15 8 is 0 이렇게 간단하게 짜집니다 ㅠ_ㅠ ![]() 정말 Assembly 언어 공부하면서... C언어가 편하다는 사실을 깨닫게 됩니다 ㅠ_ㅠ
|
Ego君는?
태그
GeekOS
foxkeh
계절학기중
닮았다
플리커
안경
골치아파
매쉬업
외가
기억하고싶지않은
닮았다는생각이...
외갓집
daum
몸건강하세요
성적따위관심없어
안경새로했음
건강하세요
Flickr
폰카사진
mashup
hacking
다음
매쉬업캠프2008
술먹고곱게들어가자.
중립
휴학때림
술
firefox
다음커뮤니케이션
건강이최고
이글루 파인더
카테고리
전체
나의 생각,의견 인터넷 리눅스 IT관련기사 과학기술스크랩 독서 책소개 立花隆(다치바나 다카시) 음악이야기 일일기록 졸업식날사진들 잡담거리 음식 블로그 영화 사진 컴퓨터 인물대전 보안관련기사 MS관련기사 컴퓨터 ubiquitous, 遍在 Embedded DB 미분류 최근 등록된 덧글
http://1991hondaprelud..
by Flora at 07/04 http://1991hondaprelud.. by Jem at 07/04 http://1991hondaprelud.. by Joy at 07/04 http://1991hondaprelud.. by Joachim at 07/04 http://1991hondaprelud.. by Howard at 07/04 http://1991hondaprelud.. by Matilda at 07/04 http://1991hondaprelud.. by Adrian at 07/04 http://1991hondaprelud.. by Joachim at 07/04 http://1991hondaprelud.. by Pip at 07/04 http://1991hondaprelud.. by Joy at 07/04 2008년 최신 공인중개사 .. by 2008공인중개사 at 07/03 http://honda2004vtx1800op.. by Charles at 07/02 200문장 영어회화 씨디를.. by 200문장영어 at 07/02 200문장 영어회화 씨디를.. by 200문장영어 at 07/02 200문장 영어회화 씨디를.. by 200문장영어 at 07/01 200문장 영어회화 씨디를.. by 200문장영어 at 07/01 http://honda2005cbr6004fi.. by Dorothy at 06/27 오우...멋지군요.^^ .. by Shirou君 at 06/26 http://honda2005400extail.. by Lewis at 06/20 http://honda2005crf230f.b.. by Emery at 06/20 이글루 링크
EBC (Egloos Broad..
이글루스 활용팁 이글루스 도움말 egloos PEOPLE 기념일 이오공감의 흔적 2004 아테네 올림픽 이글루 이글루스 2주년 기념 이글루 새해 복 많이 받으세요 egloos ISM anniversary3 (주) 활력을 마시다. .. ||STARGAZER's Libra.. 인생의 달관자... 런~의 밥하기 싫은 날 '.. 거리로 나가자, 키스를.. 벨제뷔트의 블로그 블로거 동명이 혼자서 .. 작은 스푼 하나의 용기 성우 이명선의 블로그 [미르기닷컴] 外傳 왕도 스베이트 꿈도 희망도 없는 산왕의 건전성추구위원회 Mad Scientist 게임회사 이야기 나의 수수한 이야기 우정이상 에로미만 - 영.. 디지털을 말한다 by oojoo IAMBRUNO 세라복萌 - 리라 하우스.. cre-Inside 여러분 모두 아로하예요♡ ▶◀ 별이랑 세상 스쳐가기 KBS에 어서오세요! 뽐뿌 inside ♬(R)evolution。 헐랭이와 IT보안 the Gray Knights X-Times(지름노트) 다인의 편의점 이것저것 [H.S] 無限城 Toy Diary..*** 魔神皇帝의 제7격납고 Transitory Fantasy Studioxga.net 꺾이지 않는 펜 みらい☆すた Museum Cafe 보송보송.. studio-[HandMade] 하루에 한개씩 영양가 있.. 娜武高 엘트ELT : Extremely Ly.. Ubiquitous Fantastic .. Sike's egloo - pass.. OTLize 이젠 꺾인 이팔청춘 절대! 좌절 금지! -- ま.. 28과 6 Invictus 아사달산맥의 작은 늑대굴 sIMAGINATIONs TAG Soft 의 이글루 클랴의 베이킹파우더 Game is over 절대난감 130% 나무피리의 하얀사과빛 .. 아스플룬드 백작님+슈타.. beejei - the World Ch.. http://encyphered.net 코토네쨩의 멸살일기(天) 민승아's 遊戱天下 파란오이의 Beautiful Life THE WORLD OF SURF.. 안경소녀를 사랑합시다 .. 거무튀튀하고 음란한 것 the elegant anivurse 비영의 일상 그리고 게임 #include <iostream> 종이우산의 앙냥냥 월드.. 오리대마왕님 집 LunatixShelter Anything Review Lett.. 萌えろり (모에로리) 달밤에 산들바람 인생 참 명박하다... 개발자 서씨 겨울잠 둥지 トップヒッツ F 언젠간 용이 되고 말거야★ laneism, 파인애플달링 - 지구 정.. Hopelessly Addicted TeaTable... *sweet little things ドキドキ Daily Life★ ThornGARDEN - 茨の庭 닥치고 스트리트 파이. . .. sharin, a Low Flying.. Joie de Vivre ㅁㅊ8의 최강블로그 Shirou君'S U.S.P. 이곳은 모서리 지향 전연.. 홍차왕자의 이야기 ♪ Xeno군의 소소한 일상! 악마와 마르가리타 Today is The First Da.. ▣ FRAME GARDEN ▣ 미냐의 그린게이블스 이나시엔. 女王樣. 오늘할일은 내일로 미루자!! dcdc의 잡담창고 미역건조장 너의 웃는 얼굴이 보고 싶어 알프군의 아주 작은 일기. DreamyCat의 지붕아래.. - 無 言 歌 - my cynical stories Bon voyage♬ 엔티 노벨 담당네 이글.. 루리카씨의 일상생활 이.. 공순이 감성로그 月夜ノ下で… 바른생활일기 Hineo, 중력에 혼을 .. =ㅂ= 케이군's Life OPEN THE DOOR-조용.. 역설의 제 12 우주 月が滿ちる夜 을뀨의 제멋대로 블로그 초콜릿은 악마의 속삭임 soui.meaningless http://winnings.tistor.. 이공간 [異契褸雅粹透.. 애니메이션 관련 음반 .. 초심자용 에린 입문서 너프의 솔직발랄단백질 쓸데없는 것들의 박물지_ 일년짜리 블로그 기억의 저편 최찡의 이글이글 루~☆ 양을 쫓는 모험 아리`s Cook My Dre.. →도련님의 한적한 성。 晨晛: 粉紅結界 PerhapsSPY SYSTEM More than Words 동화(同化) 4번가의 쩨쩨한 악취미 까페 ZAKU의 지랄발광 † 라프테미야 † hydra의 개인공간 La lune éclairant le .. 斐霓廩 흑색선전 [黑色宣戰] 완결된 느낌의 미소 ☆ Hisha Kate ☆ 이름없는(無名) 블로그 꿈을 쫓는 모험 - 월화.. 오늘밤이 고비다. 새벽숲 AM 04:00 (sea.. freekgb's Story 투혼 Can you feel my heart? the Sputnik Sweethe.. Joo's Blog Частичное З.. ⓧon the pale blue dot 샨 Integrated Data Entity 골디의 방치중인 이(異.. www.jidigital.net로 이사 M-Yuki의 이것저것 막.. ♬긍정의 힘을 믿으세요♬ NT의 hagano:ハガノ .. 안 밥상뒤집기의 개판뒤 전멸 여기다가 뭘하려나..... 적당히합시다 -_-... Milktea's Paradise‥ I.D. - 인터넷 보이스.. Will Sleep Little More 기억의 단편 Glory Box art.oriented 군대에 있는 네리아리 UNDER THE MOON 오후 다섯시의 世界 - si.. Monaca 서버를 찾지 못 하였습니다. Necro Fantasia 工大生 奇譚 -(改) 폭풍간지(暴風感じ) MOSCO .2nd 로베리즘 Incarnation 半分の月의 한 박자 쉬.. 칭찬은 펭귄도 춤추게 한다. 0239군의 삐딱한 시선 Peace 로린님의 이글루 ~Lily garden~ 메뉴릿
| |||