Embedded2009. 12. 26. 09:04
굳은 머리 돌리기 위한 간단한 어셈블러 해석입니다.
오래간만에 어셈블러 한번 볼려고 하니 힘드네요
MIPS에서 어셈블러와 C의 연결을 볼려고 간단한 테스트를 해보는 것을 정리하였습니다.

1. 간단한 함수


int foo( int i , int j )
{
  return i * j;
}

위 코드를 컴파일 해서 어셈블러를 확인합니다.

mips-elf-gcc -S -march=mips32 -O2 test.c -o test.S

그러면

                            LIBCFLAGS="-g -O2 ${flags}" \
        .file   1 "test.c"
        .section .mdebug.abi32
        .previous
        .gnu_attribute 4, 1
        .text
        .align  2
        .globl  foo
        .set    nomips16
        .ent    foo
        .type   foo, @function
foo:
        .frame  $sp,0,$31               # vars= 0, regs= 0/0, args= 0, gp= 0
        .mask   0x00000000,0
        .fmask  0x00000000,0
        .set    noreorder
        .set    nomacro

        j       $31
        mul     $2,$5,$4

        .set    macro
        .set    reorder
        .end    foo
        .size   foo, .-foo
        .ident  "GCC: (GNU) 4.4.2"

과 같은 코드를 얻을 수 있습니다.

코드를 보면 jump 다음에 mul을 하는 것을 알 수 있습니다. 즉 delay slot을 기본적으로 architecture에서 가지고 가므로, jump 명령이 먼저와도 분기를 마칠때에는 레지스터에 값이 기록되게 되어 있습니다.

리턴되는 값은 2번 레지스터에 기록되고
인자는 4번과 5번으로 기록됩니다.

2. unsigned 64비트 곱셈 test


unsigned long long  foo( unsigned long long i , unsigned long long  j)
{
  return i* j ;
}

../local/bin/mips-elf-gcc -S test3.c -o test3.S -O2 -march=mips32
으로 컴파일해서 결과를 보면 아래와 같습니다.

        .file   1 "test3.c"
        .section .mdebug.abi32
        .previous
        .gnu_attribute 4, 1
        .text
        .align  2
        .globl  foo
        .set    nomips16
        .ent    foo
        .type   foo, @function
foo:
        .frame  $sp,0,$31               # vars= 0, regs= 0/0, args= 0, gp= 0
        .mask   0x00000000,0
        .fmask  0x00000000,0
        .set    noreorder
        .set    nomacro

        mul     $2,$4,$7
        multu   $7,$5
        mflo    $9
        mfhi    $8
        mul     $3,$6,$5
        addu    $2,$3,$2
        addu    $2,$2,$8
        j       $31
        move    $3,$9

        .set    macro
        .set    reorder
        .end    foo
        .size   foo, .-foo
        .ident  "GCC: (GNU) 4.4.2"

입력이 64비트 두개의 값이므로,
4개의 레지스터가 입력으로 들어와야 합니다.


$4,
$7
$5
$6이 입력이 됩니다.

64비트 입력은 두개의 레지스터이고 두 64비트의 곱셈은

              A B
x            C D
----------------
         [B x D]
    [A x D]
    [B x C]
[A x C]
-------------
Result

입니다.

그런데 결과값이 64비트만 필요하므로 [A x C]는 불필요 합니다. 따라서 곱셈이 3번만 하면됩니다.
위의 코드에서 곱셈이 3번 나오는 이유입니다.

$7과 $5를 곱하면 그 결과가 Hi,Lo레지스터에 기록됩니다.
이를 $8,$9에 옮겨 두게 됩니다. [B x D]가 $8 $9입니다.

$4 $7을 곱한것은 그 결과로 하위 32비트가 필요하므로 [A x D] 가 됩니다. 따라서 공통으로 쓰이는 $7이 D임을 알수 있고, [ A : B ]는 [$4,$5]임을 알수 있습니다.
나머지 입력인 $6이 [ $6 : $7 ] 입니다.

$6 x $5를 한 하위 32비트를 사용하게 되므로 이 값이 $3에 들어갑니다.

최종적으로는 결과값의 상위 32비트에 해당되는 값은 각각의 덧셈의 결과이므로
$2 + $3 + $8이 그 결과값인 상위 32비트입니다.

이 결과값이 $2에 그리고 [BxD]의 결과값이 $3으로 옮기게 되므로 최종 결과치는
[$2:$3]이 됩니다.




'Embedded' 카테고리의 다른 글

[MIPS] Assembler 코드 살펴보기 - 3  (0) 2009.12.30
[MIPS] Assembler 코드 살펴보기 - 2  (0) 2009.12.29
Fedora 메일서버 세팅  (2) 2009.12.21
[MIPS] Simulator  (0) 2009.12.20
MPEG 1/2 Reference Site  (0) 2009.12.13
Posted by GUNDAM_IM
Life is ..2009. 12. 22. 08:51
우르과이 출신의 페더 알바레스 라는 프로듀서가 인터넷에 공개한 동영상입니다.

PANIC ATTACK이라는 제목으로 해서 목요일날 공개했는데요 월요일에 자신의 메일 박스가 모두 헐리우드 관계자 메일로 가득 찾다고 합니다.  3000만불로 영화로 만들자는 제안이 들어있었다고 합니다.

제작비 350불 짜리 동영상이 350억짜리 영화로 바뀌는 순간이되었습니다.

예전에는 재능이 있어도 이렇게 기회를 잡기가 쉽지 않았을 텐데 이제는 자신의 꿈이 있다면 기회를 잡을 수 있는 세상이라는 것을 다시금 확인시켜주는 일화가 되었습니다.

물론 그 기회를 잡을 확률이 아주 낮을 수도 있지만, 뭐,  낮으니까 기회이고 꿈인거죠.
높으면 기회라고 보기보다는 마케팅이라고 봐야 하는거라서
음 그럼 이렇게 보는 제 눈이 삐딱한것일런지도..


'Life is ..' 카테고리의 다른 글

애기들의 생일 축하 선물  (0) 2010.01.24
심심한 기자님들..  (0) 2010.01.19
SIGGRAPH [3]  (1) 2009.08.12
SIGGRAPH.....  (0) 2009.07.31
요즘 하고 있는 일들..  (0) 2009.07.08
Posted by GUNDAM_IM
Embedded2009. 12. 21. 12:24
ASIC/SoC 시뮬레이션을 할 때에는 짧게는 몇시간 걸리고 길게는 하루 넘게 계속 기다려야 하는 경우가 발생합니다.
이를 일일이 창을 열고 기다리는 것 보다는 끝나면 바로 메일로 보내주도록 설정해 놓으면 나중에 시뮬레이션이 끝나면 메일로 해당 결과와 함께 메일로 통보되도록 할 수 있습니다.



Fedora 메일서버 세팅




1. 메일서버


       Fedora Core 2 에서 기본적으로 제공하는 패키지를 이용해 웹메일을
       구축한다.



2. 필요한 패키지


       다음의 패키지가 필요하다.

               sendmail
               sendmail-cf
               dovecot
               squirrelmail
               openssl
               cyrus-sasl
               cyrus-sasl-plain
               cyrus-sasl-md5

       설치하기 전에

               rpm -qa | grep <package-name>

       의 명령으로 우선 위의 패키지가 설치되어 있는지 확인해 본다.
       설치되어 있지 않은 패키지는

               yum install <package-name>

       의 명령으로 설치할 수 있다.



3. sendmail 설정


       sendmail의 설정파일은 /etc/mail에 모여있다.

       1) /etc/mail/access
          메일을 발송할 수 있는 ip의 RELAY를 열어준다.

               localhost.localdomain RELAY
               localhost RELAY
               127.0.0.1 RELAY

          파일을 수정한 후에는

               makemap hash /etc/mail/access < /etc/mail/access
       
          의 명령으로 access.db를 갱신한다. access 파일만 수정한 경우는
          sendmail을 재시작할 필요가 없으며 access.db 파일 갱신만으로
          변경사항이 적용이 된다.

       2) /etc/mail/virtusertable
          가상 사용자 목록을 만든다. 간단한 예로,

               admin@localhost                root

          라고 적으면 실제로 system 내에 존재하지 않는 admin 으로 오는
          메일은 root 계정이 받아보게 된다. 역시 파일을 수정한 후에는

               makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable

          의 명령으로 virtusertable.db 파일을 갱신해줘야 한다.

       3) /etc/mail/local-host-names
          서버로 오는 email 중 이 파일에 나열된 주소로 오는 메일만을 받아들인다.

               ns
               example.com
               ns.example.com

          메일 주소로 사용하는 서버 이름들을 여기에 적어 놓는다.

       4) /etc/mail/sendmail.mc
          SMTP 인증 기능을 사용하기 위해서 다음의 라인을 확인한다.

                TRUST_AUTH_MECH(`LOGIN PLAIN EXTERNAL DIGEST-MD5 CRAM-MD5')dnl
                define(`confAUTH_MECHANISMS', `LOGIN PLAIN EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5')dnl

          없다면 물론 추가한다.
          외부메일을 받을 수 있게 하려면 다음의 라인을 찾은 후,

               DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

          다음과 같이 라인 처음에 dnl이라고 적는다.

                dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

          다음의 명령으로 sendmail.cf를 새로 생성한다.

               m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf



4. 나머지 설정


       나머지 설정은 그냥 기본으로 사용했다. 필요에 따라서는 다음 파일들을
       알아서 수정한다.

       1) dovecot

               /etc/dovecot.conf

       2) squirrelmail

               /usr/share/squirrelmail/config/config.php

          직접 수정하지 말고 될 수 있으면,

               /usr/share/squirrelmail/config/conf.pl

          의 명령을 이용해 수정할 것을 권한다. 설정편집시 imap 부분은 others
          로 설정하면 잘 동작한다.



5. 방화벽


       외부 포트가 열리지 않아서 메일이 도착하지 않는 경우가 종종 있다.
       iptables에서 25, 143, 993 (tcp) 포트를 반드시 열어 놓는다.



6. 서비스 시작하기


       각각의 서비스를 다음 명령으로 시작한다.

               service sendmail start
               service dovecot start


7. Perl Script


시뮬레이션은 Perl 스크립트에서 수행하면서 동작시킵니다.

sub send_mail {
  my ($status, $file) = @_;
  $to_user = $user . "\@" . "newtypeunion.com";
  system ("mail -s \"SIMULATION Result : ( $status )\" $to_user < $file");
}
.......
send_mail( "ERROR" , "./sim.log");
......

'Embedded' 카테고리의 다른 글

[MIPS] Assembler 코드 살펴보기 - 2  (0) 2009.12.29
[MIPS] Assembler 코드 살펴보기  (0) 2009.12.26
[MIPS] Simulator  (0) 2009.12.20
MPEG 1/2 Reference Site  (0) 2009.12.13
Eclipse + eCOS =??  (0) 2009.11.23
Posted by GUNDAM_IM
Embedded2009. 12. 20. 19:48
MIPS 아키텍쳐 공부하시는 분들에게 도움 될만한 사이트 하나를 발견했습니다.


http://xavier.perseguers.ch/en/programming/mips-assembler.html

사용자 삽입 이미지

MIPS Assembler and Simulator is a tool for converting MIPS assembly code into MIPS machine code in either hexadecimal or binary output format. Simulation of the execution is also allowed, as seen in the course “Computer Architecture”.


펜티엄 3에서 1초에 약 2500 명령어 정도를 수행할 수 있다고 합니다.
요샌 뭐 더 빠르게 실행하겠죠

다운로드는 이 페이지에서 할 수 있습니다.
http://xavier.perseguers.ch/en/programming/mips-assembler/download.html

소스코드도 오픈해주어서 다운 받을 수 있습니다.
http://xavier.perseguers.ch/nc/en/programming/mips-assembler/download/all-files.html

'Embedded' 카테고리의 다른 글

[MIPS] Assembler 코드 살펴보기  (0) 2009.12.26
Fedora 메일서버 세팅  (2) 2009.12.21
MPEG 1/2 Reference Site  (0) 2009.12.13
Eclipse + eCOS =??  (0) 2009.11.23
H.264 SVC 참고 사이트 입니다.  (0) 2009.07.04
Posted by GUNDAM_IM
ASIC SoC2009. 12. 17. 13:17
오래간만의 컴파일러 빌드입니다.

1) binutils  설치하기


우선 binutils를 다운 받습니다.
커맨드는 아래와 같습니다.

cvs -z 9 -d :pserver:anoncvs@sourceware.org:/cvs/src login
{enter "anoncvs" as the password}
cvs -z 9 -d :pserver:anoncvs@sourceware.org:/cvs/src co binutils
  

빌드는 아래와 같이 합니다.

mkdir build
cd build
 ../binutils-2.20/configure  --target=mips-elf --prefix=/Volumes/ZGUNDAM/usr/lcao --with-gnu-as --with-gnu-ld
make all
make install

설치가 끝나고 확인하면 아래와 같습니다.

GUNDAMMACPRO:build kevinIm$ ls /Volumes/ZGUNDAM/usr/local/bin/
mips-elf-addr2line      mips-elf-ld             mips-elf-ranlib         mips-elf-strip
mips-elf-ar             mips-elf-nm             mips-elf-readelf
mips-elf-as             mips-elf-objcopy        mips-elf-size
mips-elf-c++filt        mips-elf-objdump        mips-elf-strings

패스가 추가되어야 하기 때문에

export PATH=$PATH:/Volumes/ZGUNDAM/usr/local/bin

으로 미리 추가해 둡니다.

2. gcc를 빌드하기



에서 gcc 최신 버전을 다운 받습니다. 이 글을 쓰는 시점에서는 4.4.2입니다.

다운받아서 압축을 풀고 빌드를 합니다.

mkdir build
cd build
../gcc-4.4.2/configure --target=mips-elf --without-headers --with-gnu-as --with-gnu-ld --disable-shared --prefix=/Volumes/ZGUNDAM/usr/local/ --with-newlib --disable-libssp

그러면 아래와 같은 오류가 발생합니다.

....
checking for correct version of gmp.h... no
configure: error: Building GCC requires GMP 4.1+ and MPFR 2.3.2+.
Try the --with-gmp and/or --with-mpfr options to specify their locations.
Copies of these libraries' source code can be found at their respective
hosting sites as well as at ftp://gcc.gnu.org/pub/gcc/infrastructure/.
.......

GMP 4.1과 MPFR2.32 이상 버전이 필요하다는 의미입니다.
MAC에서는 소스를 가지고 와서 빌드하는 것과 fink등을 이용해서 다운 받는것이 가능합니다.
여기선 그냥 다운 받는것으로 하고 진행합니다.

sudo port install gmp
--->  Fetching gmp
--->  Attempting to fetch gmp-4.3.1.tar.bz2 from ftp://ftp.dti.ad.jp/pub/GNU/gmp
--->  Verifying checksum(s) for gmp
--->  Extracting gmp
--->  Applying patches to gmp
--->  Configuring gmp
--->  Building gmp
--->  Staging gmp into destroot
--->  Installing gmp @4.3.1_1
--->  Activating gmp @4.3.1_1
--->  Cleaning gmp

GUNDAMMACPRO:build kevinIm$ sudo port install mpfr
--->  Fetching lzmautils
--->  Attempting to fetch lzma-4.32.7.tar.gz from http://distfiles.macports.org/lzmautils
--->  Verifying checksum(s) for lzmautils
--->  Extracting lzmautils
--->  Configuring lzmautils
--->  Building lzmautils
--->  Staging lzmautils into destroot
--->  Installing lzmautils @4.32.7_1
--->  Activating lzmautils @4.32.7_1
--->  Cleaning lzmautils
--->  Fetching mpfr
--->  Attempting to fetch patch01 from http://distfiles.macports.org/mpfr/2.4.1
--->  Attempting to fetch patch02 from http://distfiles.macports.org/mpfr/2.4.1
--->  Attempting to fetch patch03 from http://distfiles.macports.org/mpfr/2.4.1
--->  Attempting to fetch patch04 from http://distfiles.macports.org/mpfr/2.4.1
--->  Attempting to fetch mpfr-2.4.1.tar.lzma from http://distfiles.macports.org/mpfr/2.4.1
--->  Verifying checksum(s) for mpfr
--->  Extracting mpfr
--->  Applying patches to mpfr
--->  Configuring mpfr
--->  Building mpfr
--->  Staging mpfr into destroot
--->  Installing mpfr @2.4.1-p4_1
--->  Activating mpfr @2.4.1-p4_1
--->  Cleaning mpfr


그러면 설치가 된다. 설치된 위치는 /opt/local입니다.
이 위치를 반영하여서 다시 아래와 같이 커맨드를 넣습니다.

GUNDAMMACPRO:build kevinIm$ ../gcc-4.4.2/configure --target=mips-elf --without-headers --with-gnu-as --with-gnu-ld --disable-shared --prefix=/Volumes/ZGUNDAM/usr/local/ --with-newlib --disable-libssp --with-gmp=/opt/local --with-mpfr=/opt/local  --enable-languages="c"

make all

그러면 한참 컴파일을 합니다.

그러다가 다음과 같은 오류를 냅니다.

gcc  -g -O2 -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE  -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wcast-qual -Wold-style-definition -Wmissing-format-attribute   -DHAVE_CONFIG_H  -o cc1-dummy c-lang.o stub-objc.o attribs.o c-errors.o c-lex.o c-pragma.o c-decl.o c-typeck.o c-convert.o c-aux-info.o c-common.o c-opts.o c-format.o c-semantics.o c-ppoutput.o c-cppbuiltin.o c-objc-common.o c-dump.o c-pch.o c-parser.o  c-gimplify.o tree-mudflap.o c-pretty-print.o c-omp.o dummy-checksum.o \
          main.o  libbackend.a ../libcpp/libcpp.a ../libdecnumber/libdecnumber.a ../libcpp/libcpp.a ./../intl/libintl.a -liconv  ../libiberty/libiberty.a ../libdecnumber/libdecnumber.a   -L/opt/local/lib -L/opt/local/lib -lmpfr -lgmp
Undefined symbols:
  "_iconv_close", referenced from:
      __cpp_destroy_iconv in libcpp.a(charset.o)
      __cpp_destroy_iconv in libcpp.a(charset.o)
      __cpp_convert_input in libcpp.a(charset.o)
      __nl_free_domain_conv in libintl.a(loadmsgcat.o)
  "_iconv", referenced from:
      _convert_using_iconv in libcpp.a(charset.o)
      _convert_using_iconv in libcpp.a(charset.o)
......


이 오류는 다음과 같이 커맨드를 넣어서 해결한다.

sudo port deactivate libiconv
/sw/bin/fink update libgettext3-dev

이후에 make를 하면 잘 진행된다.

make all
make install

테스트를 하면

GUNDAMMACPRO:build kevinIm$ mips-elf-gcc --help
Usage: mips-elf-gcc [options] file...
Options:
  -pass-exit-codes         Exit with highest error code from a phase
  --help                   Display this information
  --target-help            Display target specific command line options
  --help={target|optimizers|warnings|params|[^]{joined|separate|undocumented}}[,...]
                           Display specific types of command line options
  (Use '-v --help' to display command line options of sub-processes)
  --version                Display compiler version information
  -dumpspecs               Display all of the built in spec strings
  -dumpversion             Display the version of the compiler
  -dumpmachine             Display the compiler's target processor
  -print-search-dirs       Display the directories in the compiler's search path
  -print-libgcc-file-name  Display the name of the compiler's companion library
  -print-file-name=<lib>   Display the full path to library <lib>
  -print-prog-name=<prog>  Display the full path to compiler component <prog>
  -print-multi-directory   Display the root directory for versions of libgcc
.......

3) Newlib 컴파일 하기

다운로드는 다음 커맨드로 받습니다.
  cvs -z 9 -d :pserver:anoncvs@sources.redhat.com:/cvs/src login
  {enter "anoncvs" as the password}
  cvs -z 9 -d :pserver:anoncvs@sources.redhat.com:/cvs/src co newlib

../src/configure --target=mips-elf -prefix=/Volumes/ZGUNDAM/usr/local --with-gnu-as --with-gnu-ld

이후에

make all
make install

을 하면 됩니다.


확인은 아래와 같이 합니다.
GUNDAMMACPRO:build kevinIm$ ls /Volumes/ZGUNDAM/usr/local/mips-elf/lib/

cfe.ld          ddb.ld          ldscripts       libidt.a        libnullmon.a    pcrt0.o
crt0.o          el              libc.a          liblsi.a        libpmon.a       pmon.ld
crt0_cfe.o      idt.ld          libcfe.a        libm.a          lsi.ld          soft-float
ddb-kseg0.ld    idtecoff.ld     libg.a          libnosys.a      nullmon.ld
GUNDAMMACPRO:build kevinIm$



 

'ASIC SoC' 카테고리의 다른 글

Sound Effect Processor  (0) 2010.02.01
[SC] Structure  (0) 2010.01.18
PERL TIP  (0) 2009.12.05
Timing Chart  (0) 2009.11.08
SystemC에서 main() 함수 넣기  (0) 2009.11.04
Posted by GUNDAM_IM
Embedded2009. 12. 13. 08:13
The reference website for MPEG!
MPEG 1/2에 관한 레퍼런스 사이트입니다.
        TM과 Source code등이 함께 있습니다.

Test Model 5

MPEG2 Test Model 5에 대한 이야기가 있습니다.

MPEG-4 Structured Audio: Developer Tools

        MPEG4-SA에 대한 온라인 북이 있습니다.

Multimedia Presentation about Structured Audio

        MPEG4-SA에 대한 온라인 프리젠테이션이 있습니다.

MPEG-2 Transport Stream packet analyser

  Peter Daniel 이 오픈하고 지원하는 스트림 패킷 분석 소프트웨어 입니다.
    윈도우즈 버전이고, 무료입니다. 사용해 보고 좋으면 10파운드 씩 지원해 돌라고 합니다.
    그리고 툴은 무료이지만, 소스 코드는 무료가 아니랍니다.
    소스 코드를 받기 위해서는 별도의 계약이 필요합니다.
Roy Wang, Ph.D이 만든 MPEG2 파서입니다.
소스코드는 배포하지 않습니다.

P.N. Tudor가 정리한 MPEG2 표준안 설명 자료입니다.
BBC 사이트에 있네요

Beginners Guide for MPEG-2 Standards
MPEG2 비디오와 MPEG2오디오에 대한 설명을 정리한 사이트입니다.

설명이 필요 없습니다.

MPEG-2 Overview and MATLAB code Project

A discussion of MPEG-2 coding techniques and a MATLAB program that demonstrates MPEG-2 style encoding and decoding.


'Embedded' 카테고리의 다른 글

Fedora 메일서버 세팅  (2) 2009.12.21
[MIPS] Simulator  (0) 2009.12.20
Eclipse + eCOS =??  (0) 2009.11.23
H.264 SVC 참고 사이트 입니다.  (0) 2009.07.04
DM6467 Develop Board  (2) 2009.06.25
Posted by GUNDAM_IM
Hobby2009. 12. 9. 08:39
아이폰이 드디어 나왔습니다.

정말 나올줄이야 하는 생각이 들고, 얼렁 사야 할텐데 하는 생각도 드네요
가장 큰 난제는 지금 가지고 있는 핸펀은  아직 할부가 조금 남아서 고민이 되네요
이래저래 목하 고민 중

그동안 가지고 있던 핸펀에 불만은
   우선 MP3를 핸드폰 벨소리로 지정했으면 좋겠습니다.
   - 업자들 돈 벌려고 이 단순한 기능조차 막아 두었습니다. 에휴~~
   
   이동중에 가끔 메일 체크하는 기능이 있으면 좋겠는데
   - 아주 가끔은 필요해집니다. 그때마다 노트북 키고 보기에는 어렵죠.. 쩝..
   - 이 기능은 아이팟 터치에서 내장되어서 사용하였는데 아주 편리합니다.
   
   PC랑 데이터가 잘 호환되었으면,
   - 핸펀 PC에 붙여서 데이터 백업 받을려면 그때 마다 엄청 공부해야 합니다.
     왕짜증.. 날때가 있죠
 
  하지만 지금 사용하는 아이팟 터치 + 핸펀은 주머니를 불룩하게 보여서 싫어집니다.
 
  사실 제가 가진 문제의 핵심은 이것을 구입함으로서 애플 전도사의 지위를 유지하고 매니아의 지위를 유지하느냐 인데   뭐.. 그닥 이런것은.. 그동안 맥북프로 17"로 엄청 잘 유지했기 때문에  새삼스렇게 할 필요가 없을 듯 하네요

  암튼 지극히 개인적인 이유이지만, 이런 저런 핑계로 아이폰을 사야하나 생각중입니다.
  뭐, 개인적인 취향 + 이유를 다른 사람들에게 설명하고 납득을 구할 필요는 없을 것 이고,
  암튼.. 드디어 나온 아이폰이 고민아이템을 하나 더 올려주네요
 
  원래 계획은 PS3를 사서 건담전기 할려고 했었는데

  글고, 점심에 엘레베이터에서 옆에 탄 분은 아이폰을 자랑하더군요.. 역시 멀리서 봐도 알 수 있는 자체 발광 핸펀이더라구요..  
아이 부러워라

'Hobby' 카테고리의 다른 글

[일본 여행] - 하코네 지도  (0) 2010.01.12
새로운 트랙키의 시작입니다.  (0) 2010.01.05
[DQ9] 오오 드디어 엔딩으로  (0) 2009.11.17
Perl Debug command 정리  (0) 2009.11.17
[DQ9] 드디어 마지막 장으로....  (0) 2009.11.12
Posted by GUNDAM_IM
ASIC SoC2009. 12. 5. 10:29
1. Perl Script에서 환경 변수를 가지고 오기
    많은 파일을 동시에 사용하면서, 설정을 하여야 할 경우 실행 옵션으로 주는 것이 편합니다.
    하지만, 패스같은 것들은 그냥 환경변수에 세팅해 놓고 PERL 스크립트에서 환경 변수를 받아들여서
    패스로 사용하는 것이 편합니다.
    아래는 그에 대한 예입니다.

     $WORK_ROOT = $ENV{"WORK_ROOT"};
     print STDOUT "[MSG AAAA] $WORK_ROOT\n";  

    실행 결과는 아래와 같다.

     [MSG AAAA] /home/GUNDAM/work_code
   
2. 스타트 옵션에서 -I로 패스를 지정할 수 있습니다.
   그런데 이것이 상대 패스로 지정되면, 시작하는 폴더가 유저마다 틀릴 경우,  귀찮게 됩니다.
    그리고 절대 패스로 해두면, 개발 환경을 다른데로 옮겼을때, 다시 귀찮게 됩니다.
   이런것을 해결하는 방법이  환경 변수를 설정해서 지정하면 해결됩니다.

   export PERL5LIB=/home/GUNDAM/PerlScript/
 
위에서 사용하는 환경 변수 PERL5LIB은 PERL 실행시 기본으로 모듈을 검색하는 @INC패스에 포함되지
않은 경우 추가로 찾을 수 있도록 패스를 추가할 수 있는 환경 변수입니다.
3. 문자열 내에 괄호 ( ( ) 가 있을 경우
정규식 표현을 이리저리 해보았지만 잘 안되었는데
[ ]으로 둘러 싸면 인식을 한다.

$target_line2 = "do[(]\"\/check\/tools\/scripts";

으로 설정한다.


요새 뜬금없이 PERL을 쓰면서  정리하고 있는 것입니다.

'ASIC SoC' 카테고리의 다른 글

[SC] Structure  (0) 2010.01.18
[MIPS] OSX에서 MIPS C Compiler를 빌드하기  (0) 2009.12.17
Timing Chart  (0) 2009.11.08
SystemC에서 main() 함수 넣기  (0) 2009.11.04
SystemC에서 배포가능 버전 만들기  (0) 2009.11.01
Posted by GUNDAM_IM
Animation2009. 12. 1. 23:20
가이버는 고등학교떄인가에 나와서 아직도 연재하는 참으로 오래동안 연재하는 만화입니다.
말하자면, 또하나의 F.S.S.
스토리가 처음에는 단순하였는데,  점점 복잡해 지더니 이제는 뒤처리도 힘든 상황이 되었습니다.
워낙 오래되고 유명하고, 팬도 매니아도 많은 만화이기 때문에 (아울러 늘어지는 스토리로 앤티도 많은.. ) 여기서 스토리를 이야기하는 것은 의미가 없겠습니다.

주저리 주저리 떠든다면....

사용자 삽입 이미지

  가이버 애니메이션은 8~90년도에 아주 질 떨어지는 애니로 만들어서 발표해서  수많은 가이버 팬들에게 엄청난 절망감을 안겨준 전레가 있습니다. 지금 수준의 애니를 보던 눈으로 봐서 조악한 것이 아니라, 그 당시에 애니 수준의 눈으로 봐도 조악한 수준이었습니다. 그래서인지 새로운 애니가 나왔다고 하여도 보지 않았었습니다. 그나마 남아 있는 좋은 기억을 지키기 위함이었습니다. 이번에  구한 애니메이션은 그때 외면하였던 2005년도 버전입니다. 조악했던  소시적 그때 작품에 비해서는 아주 질이 좋아졌습니다.  스토리도 구질 구질하게 전편을 이어서 하지 않고  처음부터 새로 그리는 것도 맘에 들고요

안타까운 점은 여주인공의 매력이 별로 없다는 점이죠, 원작 만화도 여주인공은 상당히 존재감이 떨어지는 편이라서 원작을 그대로 살렸다는 점은 좋은 평가이지만, 여주인공이 애니나 만화를 선택하는 중요한 기준이 되는 사람들에게는 상당히 아쉽습니다.  오리지널 캐릭터를 넣어서라도 시도해 볼 만한 이슈였을텐데요.

사용자 삽입 이미지
오프닝에 나오는 가이버 1,3가 나란히 뛰는 장면, 이런 구태스러운 장면은 필요 없는데, 왜 항상 나올까요 ?
그리고 개인적으로는 디자인이 가이버 1보다는 3가 훨씬 좋아보입니다.  검은색 컬러도 좋고...
맹물탄 주인공 보다는 점점 악역에 가까워지지만, 확실한 목적을 가진 가이버 3의 아기토가 좋습니다.
참고로 저는 악역이더래도 의지를 가진 캐릭터가 좋습니다.

사용자 삽입 이미지
이넘이 최종 보스인 알칸펠입니다.
원래 강림자들의 대리인으로 지구를 통치하는 역활을 맡았지만 나중에는 버림 받아서 반기를 들은 캐릭터입니다.
나름의 아픔을 간직한 캐릭터이죠

사용자 삽입 이미지
막 기동을 시작하는 기간틱 가이바 입니다.
압도적인 힘과 전투력을 자랑하는 가이바 버전 2이죠. 흠.. 그러고 보니 프리쟈처럼 2단 변신을..
그리고, 주변에 빛나는 오라는 잘 그려져서, TV화면 보다는 훨씬 큰 극장 화면 처럼 넓은 화면으로 보면 몰입감이 있을것 같습니다.

사용자 삽입 이미지
여성형 가이버 26권부터 등장합니다. 2호기 컨트롤을 이식 식장하여 탄생했습니다.


가이버의 계보를 이어가는 작품중에는 제일 알려진 것이 간츠 이죠
강화 장갑을 입는 다는 점에서는 비슷한 스토리입니다만, 그 배경과 철학은 완전히 다른 부분이 있습니다.

무엇보다 확실하게 다른 점은 스스로를 마모루 나가노 2호기의 반열에 올린 가이버 작가에 비해서는 간츠는 오쿠 히로야 선생이 끝을 내줄 거라는 믿음이 있다는 거죠. 물론 2호기는 마모루 나가노 1호기에비해서는 (비교적) 성실하게 연재 한다는 점은 사실입니다. 1호기가 원체 부실하기 때문에~~ 비교 자체가 안되는게 사실이죠

참고로 영원히 끝나지 않을 3대 악의 축 만화는

F.S.S.
가이바
바스타드

입니다.

여기에 우리나라의 열혈 강호를 끼우면 완전한 4대 천왕이 됩니다.
애증이 겹쳐지는 작품들이죠..
나쁜작가들

'Animation' 카테고리의 다른 글

다시보는 Z 건담  (1) 2011.03.15
건담 팬들을 위한 부천 판타스틱 영화제  (2) 2010.05.26
건담 강림..  (0) 2009.06.17
銀河鐵道 999를 다시 보며..  (0) 2009.04.16
막장 기어스 드디어 다 보다  (0) 2009.01.03
Posted by GUNDAM_IM
Books2009. 11. 25. 14:12
사용자 삽입 이미지

영화 뷰티플 마인드를 보면 정신병을 가진 수학자의 이야기가 나옵니다.

세상을 대화하는 유일한 방법으로 수학을 가지고 대화를 하지만, 머리속에서 만든 가상의 인물들로 인해 혼란에 빠지는 인물입니다. 이 사람이 그 유명한 존 내쉬 이고, 게임 이론이라는 독창적인 이론을 가지고 수학자 임에도, 노벨 경제학상을 받은 사람입니다.


수학자가 뜬금없이 경제학상을 받은데에는 그만큼 게임이론이라는 상당히 독창적인 이론을 설파하였기 때문입니다. ( 이 상황은 정극 연기자인 이순재 선생님이, 거침없이 하이킥으로, 희극 상을 수상하는 것과 같은 맥락입니다. )


  존 내쉬가 전성기 이던 시절에는 (영화에서 보면, 대학교 강사/교수 생활 전후가 그에 해당하는것 같습니다.) 그 당시에는 애덤 스미스가 주창한 경제이론이 뒤덮던 시기였는데, 모든 사람은 최선의 결과인 공동의 선을 추구/선택한다는 것이 애덤 스미스의 이론의 주안점이었습니다. 그런데 존 내쉬는 이 이론에서 더 나아가서 모든 사람은 자신이 처한 상황에서 최선의 선택을 하다는 것이 게임 이론입니다. 즉 가장 좋은 결과가 있음에도, 최악의 결과를 피하기 위한 선택을 한다는 이론입니다. 물론 이 것은 이 이론의 단지 출발점에 불과합니다. 이후 복잡한 전략 선택을 하기 위한 여러가지 판단을 선택하는 것에 대한 이론입니다.


  책으로보면 게임이론을 설명하기 위해서는 이론의 시작은 간단하기 때문에,  여러가지 범례를 찾아서 설명하게 됩니다.  범례란것은  여러가지 선택하여야 하는 상황을 설정해 놓고 게임 참여자들이 어떻게 상황을 풀어가는지에 대해서 설명하는  것입니다.  이런 방식으로 게임이론을 설명하는 책들이 몇권이 있습니다. 대개 이런 류의 설명들은 전제 조건으로 등장하는 것이 사람들은 항상 논리적인 판단을 한다는 전제 조건하에서 설명하고 있습니다.  논리적이지 못하면 성립이 안되는 게임이죠.


  하여튼 이름에 게임이라는 글자가 들어가기 때문에 그렇게 깊은 학문이 아니라고 평가되는 부분도 있지만, 파고 들어가면 깊이가 아주 깊은 설명을 많이 합니다.  그리고 사람들은 그런 깊이 있는 학문을 경제학이라는 다소간 실용적인 학문에 집어 넣고 설명하고 있습니다.  이 때문에 실생활에 나타날 만한 예를 계속 찾아서 발굴하고 그것을 설명하면서, 그렇기 때문에 게임 이론이 잘 들어 맞는다 라는 설명을 합니다.


  다른 경제학 설명보다 좋은 점은 실제 벌어질 만한 상황에 대해서 논리적인 설명을 내 놓기 때문에 보는 사람도 상황의 전개를 이해할 수 있다는 점입니다.   그런 부분을 인정받아서 쉽게 설명한다라는 이미지를 주기 위해서 책 저자들은 설명을 위한 더욱 실제적인 예제를 만들기 위해서 노력하게 되는 선순환 혹은 악순환 구조를 이룹니다.


  그런 관점에서 보면 이 "전략의 탄생"이라는 책은 그 소재를 다른 책에서 보다는 좀더 실제 주변에서 벌어지는 것을 가지고 설명하고 있습니다. 예를들어서 미국에서 방영되었던 서바이벌 게임에서의 최종 승자의 선택 전략을 설명한다든가 혹은 축구 패널티킥 상황에서 왼쪽을 막을것인가 오른쪽을 막을 것인가 등등 이 그런 예가 됩니다.


개인적으로는 영화 뷰티플 마인드를 본 뒤에 흥미가 생겨서 관련한 서적을 몇권 보았습니다.


경제학에 낮설은 사람이 그래도 경제학이라 부를 수 있는 내용을 본다는 점과,  논리적인 결과를 추론하고, 설명하는 다는 점에서 저같은 단순 무식한 공돌이가 접근할 수 있는 내용이기 때문입니다.


이 전략의 탄생은 게임이론을 잘 몰라도, 그냥 책 자체로  즐기면서 볼만한 수준의 책이기 때문에 공돌이 전문 서적이 지긋 지긋 한 분들은 한번, 머리 식힌다는 차원에서 권해 볼만한 책입니다.

말하자면 말라붙은 PCB에 물주기라는 느낌으로 볼 수 있는 책입니다.


끝으로 번역 하신 분은 게임 이론을 그렇게 잘 알지 못하는 분입니다. 몇군데 번역의 오류가 있어서, 책 자체의 평가는 좋지만, 번역에 대한 평가는 낮습니다. 뭐, 그렇다고 원서 보면서 공부할 만큼 절실하게 필요한 부분이 아니라, 참고 보는 지혜가 필요합니다.


게임 이론 관련 글중에 인터넷에서 재미있는 글은

  노무현과 게임이론..

  게임이론으로 바라본 미국과 중국 협상 관전 포인트

  그리고 드라마 선덕여왕에서 나왔다는 비담의 죄수의 딜레마 

입니다.

하지만 빙산의 일각이니, 관련글을 찾아보시면 재미있는 응용 포인트가 많이 나옵니다.


Posted by GUNDAM_IM