어셈블리어를 알아야되는 부분이 있어서 기록한다.


 GCC는 전처리, 어셈블리어로 변환, 컴파일, 링크 이렇게 나뉘어지는데

 전처리는 파일로 표현되지 않고, 기본적으로 화면에 추출된다.

 어셈블리는 문법을 나뉘어서 Intel과 AT&T 문법으로 나뉜다.

 NASM과 다른 점은 NASM은 Intel류만 변환해주는 것으로 알고 있으며, Intel 문법에서 변형된 형태를 뛴다.

 하지만, GNU  AS(약자로 GAS라고 하는데, 검색하면, 다른 걸로 검색되는 문제점 때문에 그냥 GNU AS라고 치겠다.)는 리눅스에서 주로 쓰인다.(MinGW 같은 프로그램 아닌 그냥 일반적인 GCC일 경우엔, 리눅스에서만 쓰인다.)


 일단, 모든 컴파일 과정을 적혀지는 방법은 다음과 같은 명령어를 처리하면된다.


 GCC에서 --save-temp라는 옵션을 이용하면, 전처리-어셈블리어-컴파일-링크을 사용한다.


 어셈블리어는 AS라는 프로그램, 링크는 사용하는건 ld을 이용하는걸 확인 했다.(전처리, 컴파일은 어떤 프로그램을 사용하는지 모르겠다.) GCC는 파일은 통합적으로 관리하기 위한 것이지, GCC자체가 컴파일 프로그램이 아니다.


 그래서 전처리 과정과 어셈블리어 과정등을 사용해서 만들어 날 수 있다.


 어셈블리어가 Intel, AT&T가 나뉘어 진다고 한다.


 일단적으로 GNU AS는 AT&T가 형태가 나뉘어 지며, Intel을 출력하는 방법은 masm=Intel을 이용해야된다.


 결과를 다음과 같이 출력된다.


 GCC -S main.c


 AT&T문법

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
    .file    "main.c"
    .def    __main;    .scl    2;    .type    32;    .endef
    .section .rdata,"dr"
.LC0:
    .ascii "Hello World!\0"
    .text
    .globl    main
    .def    main;    .scl    2;    .type    32;    .endef
    .seh_proc    main
main:
    pushq    %rbp
    .seh_pushreg    %rbp
    movq    %rsp, %rbp
    .seh_setframe    %rbp, 0
    subq    $32, %rsp
    .seh_stackalloc    32
    .seh_endprologue
    movl    %ecx, 16(%rbp)
    movq    %rdx, 24(%rbp)
    call    __main
    leaq    .LC0(%rip), %rcx
    call    printf
    movl    $0, %eax
    addq    $32, %rsp
    popq    %rbp
    ret
    .seh_endproc
    .ident    "GCC: (rubenvb-4.8.0) 4.8.0"
    .def    printf;    .scl    2;    .type    32;    .endef
 
cs


 GCC -S -masm=Intel main.c

 Intel 문법

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
    .file    "main.c"
    .intel_syntax noprefix
    .def    __main;    .scl    2;    .type    32;    .endef
    .section .rdata,"dr"
.LC0:
    .ascii "Hello World!\0"
    .text
    .globl    main
    .def    main;    .scl    2;    .type    32;    .endef
    .seh_proc    main
main:
    push    rbp
    .seh_pushreg    rbp
    mov    rbp, rsp
    .seh_setframe    rbp, 0
    sub    rsp, 32
    .seh_stackalloc    32
    .seh_endprologue
    mov    DWORD PTR 16[rbp], ecx
    mov    QWORD PTR 24[rbp], rdx
    call    __main
    lea    rcx, .LC0[rip]
    call    printf
    mov    eax, 0
    add    rsp, 32
    pop    rbp
    ret
    .seh_endproc
    .ident    "GCC: (rubenvb-4.8.0) 4.8.0"
    .def    printf;    .scl    2;    .type    32;    .endef
 
cs


 이렇게 결과가 나온다.


 이런 방법으로 어셈블리어가 돌아가는 방식과 기초는 어셈블리어 책을 참조해서 공부해야겠다.

Posted by JunkMam
,

 간단한 프로그램 만드는 방법으로 파일 입출력으로 자기 자신을 복사하는 프로그램을 만들고자한다.


 그냥 공부용으로 자기 자신을 복사하는 프로그램을 만들려고 한 것이다.


 방법은 엄청 복잡하지 않다.

 그냥 파일 입출력으로 자기 자신을 복사하는 프로그램을 만들려고한다.

 우리가 쉽게 배우는 fopen이나, fread, fwrite등을 이용할 것이다.


 fopen은 자기 자신을 열게 만들고, 자기 클론이 될 파일을 생성하고, 그 파일을 복사하는 형태를 취하게 할 것이다.


 간단하게 말해서 파일 복사 방식을 사용할 것이다.


 소스는 다음과 같다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <stdio.h>
#include <stdlib.h>
 
#include <string.h>
 
#include <windows.h>
 
int main(int argc, char** argv)
{
    FILE *me = NULL;
    FILE *clone = NULL;
 
    char names[255= {0,};
    char buffer[1024= {0,};
 
    int read = 0;
 
    strcpy(names,argv[0]);
    strcat(names,".exe");
 
    me = fopen(argv[0],"rb");
    clone = fopen(names,"wb");
 
    while(read = fread(buffer,sizeof(char),1024,me)){
        fwrite(buffer,sizeof(char),read,clone);
    }
 
    printf("Hello world!\n");
    return 0;
}
 
 
cs


 간단하게 구현되어 있는 방법으로, 여기서 알아야 될 것은 main의 매개 변수이다.


 main의 매개 변수는 argc와 argv인데,

 argc는 해당 파일에서 명령을 입력하는 총 갯수를 뜻하고, argv는 그 명령의 내용을 뜻한다.


 즉, 명령 프로토콜(CMD)에서 명령이 main의 매개변수가 된다.


 예을 들어서

 clone.exe -A Next


 이렇게 입력을 했다면,

 argc는 3이라는 값을 가지게 되고, argv는 각각 "clone.exe" "-A" "Next" 을 가지게 된다.


 argv[0]는 정확하게는 실행시키는 파일의 최대 경로를 가지게 되어 있는게 맞다.


 자기 자신을 복사하는 프로그램은 딱히 쓸 일은 없지만, 파일 입출력과 argv을 이용해서 자기 자신을 복사할 수 있음을 알려주기 위해서 작성한 글이다.

Posted by JunkMam
,

 이번에 사용하는건 간단한 키보드 입력 인식 및 처리 방법이다.

 Hexa Code Editor를 TUI 형태로 처리 하기 위해서 getch()을 이용했다.[각주:1]


 윗 방법은 conio.h로 콘솔 입출력에서 수정하는 방법이다.

 Windows.h에서는 또 다른 방법으로 처리하는 방법이 있다.


 이것의 예로는 GetKeyboardState 혹은 GetAsyncKeyState을 이용해서 처리한다.[각주:2]

 이 방법은 가상 키 처리이기 때문에, 콘솔 입출력이 아닌, Windows에서 제공하는 방법을 사용하면 된다.


 콘솔로 처리하고 싶어서, 일단, 콘솔 입출력으로 구현했다.


 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <stdio.h>
#include <stdlib.h>
 
#include <windows.h>
#include <conio.h>
 
int main()
{
    COORD coord;
 
    char keys = 0;
 
    int a = 1;
 
    short x=0,y=0;
 
    while(a){
        keys=getch();
        switch(keys){
        case 'a':
        case 'A':
            if(x>0) x=x-1;
            break;
        case 'd':
        case 'D' :
            if(x<10) x=x+1;
            break;
        case 's':
        case 'S':
            if(y<10) y=y+1;
            break;
        case 'w':
        case 'W':
            if(y>0) y=y-1;
            break;
        case 'c':
        case 'C':
            a=0;
            break;
        default:
            break;
        }
        coord.X=x;
        coord.Y=y;
 
        SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);
 
        printf("W");
    }
 
    coord.X = 0;
    coord.Y = 11;
 
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);
 
    printf("Hello world!\n");
 
    return 0;
}
 
 
cs


 다른 방법으로 앞서 설명한, 가상 키를 입력 받아서 처리하는 방법을 사용해도 된다.


 윗 방법에다가 Hexa Code Editor의 출력 부분을 설정하면, 완성하면, TUI형태의 편집기가 완성된다.

Posted by JunkMam
,

 Windows에서 사용되는 DOS 커서 설정하는 것은 꼭 Hexa Code Editor을 만들기 위해서 사용되는 방법이 아니다.


 단, 이걸 이용해서 DOS의 커서를 설정해야지만이 TUI을 제작할 수 있기 때문에 기록하는 것이다.


 DOS의 커서를 설정하는데 사용되는 함수는 setConsoleCursorPosition[각주:1]이라는 함수이다.


 이 함수를 이용하면, 만들어지고, 어셈블리어를 설정하면, 또다른 방법으로 TUI을 설정할 수 있다.(이것은 나중에 찾아봐야겠다.)


 예제)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <stdlib.h>
 
#include <windows.h>
 
int main()
{
    COORD coord;
 
    coord.X = 10;
    coord.Y = 20;
 
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);
 
    printf("Hello world!\n");
    
    return 0;
}
 
 
cs


 여기서 COORD[각주:2]라는 구조체가 필요하게 된다.

 여기서 coord라는 녀석은 콘솔의 X, Y의 값을 저장하는 구조체가 있다.

 GetStdHandle()[각주:3]은 콘솔의 핸들러를 받아서 처리하는 것이다.

 STD_OUTPUT_HANDLE이라는 것은 기본적으로 설정되어 있는 핸들이다.


 여기 핸들의 정보는 각주를 참조하는게 좋을 것으로 생각한다.

Posted by JunkMam
,

 Hexa Code Editor 필자는 바이너리 에디터라고 말하는 에디터는 파일의 내용물을 이진 파일 입출력을 이용해서 불러와서 내용물을 보는 편집기를 말한다.


 컴퓨터의 모든 프로그램은 바이너리 데이터들을 책처럼 나열해 놓은 형태이다.

 

 예을 들어서 EXE 파일이나, JPEG, PNG 등의 모든 파일들은 바이너리 입출력으로 처리되며, 이 파일의 형태에 맞춰서 읽어 들인다.

 EXE. 즉, 실행 파일조차도 COFF에 맞춰서 사전처럼 읽어 들이고, 쓰게 되어있다.


 이걸 이용해서 바이러스파일이나, 기타 파일을 분석하거나 수정을 가할 수 있는 방식이라고 생각하면 된다.

 쉽게 분석할려면, 이 Hexa Code Editor을 수정해서 CPU에서 읽어들이는 형태(어셈블리어)를 자동으로 변환 시켜주는 틀을 만들어야되지만, Hexa Code Editor는 그 뿐만 아니라, 다른 파일들도 분석할 수 있기 때문에 다양하게 사용될 수 있다.


 옛날에는 게임의 저장 파일을 수정해서 에디팅을 하기 위해서 사용되었다.


 그럼, 이렇게 다양하게 사용할 수 있는 툴을 만들어 보고자 한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <stdio.h>
#include <stdlib.h>
 
#include <windows.h>
 
#define BUFFER_SIZE 16
 
int main()
{
    FILE *fp = NULL;
 
    char buff[BUFFER_SIZE] = {0};
    long offset = 0;
    int read = 0;
    int num = 0;
 
    fp = fopen("./a.exe","rb");
 
    if(fp == NULL) return -1;
 
    while((read = fread(&buff,sizeof(char),BUFFER_SIZE,fp))!=0){
        printf("%.10X : ",offset);
 
        for(num = 0; num < read; num++){
            printf("%.2X ",buff[num]&0xFF);
        }
        offset+=read;
 
        printf("\n");
    }
 
 
    fclose(fp);
 
    return 0;
}
 
 
cs


 이렇게 하면, a라는 파일의 내용물을 출력하게 된다.

 이 출력된 데이터는 Hexa로 출력되기 때문에, Hexa Code Editor 혹은 Hexa Edit/ Hex Edit라고 한다.


 여기서 중요한건, 바이너리(이진)으로 입출력해야된다.

 그렇게 하지 않으면, 입출력을 문자로 처리하기 때문에, 영어권 외의 곳에선 1Byte 이상의 데이터를 읽어들여서 출력하게 된다.(줄 바꿈또한 1-2Byte을 사용하게 된다.)

 이렇게 되면, 문제가 있기 때문에 fopen([파일명],"rb");을 이용해야된다.

'연습' 카테고리의 다른 글

Hexa Code Editor 만들기 -키보드 입력 인식-  (0) 2015.11.24
Hexa Code Editor 만들기 -Windows에서 DOS 커서 이동.-  (0) 2015.11.23
CodeBlocks 설치 및 설정하기.  (0) 2015.11.17
XWRT 문제점...  (0) 2015.11.15
GAR --Help  (0) 2015.11.11
Posted by JunkMam
,

 Code::Blocks란, C언어 및 포트란 등을 지원하는 오픈 소스의 크로스 플렛폼 IDE(통합 개발 환경)이다.(Free Software이다.)



 


  ↑ Code::Blocks을 다운 받는 곳


 Code::Blocks는 크로스 플렛폼이기 떄문에, 리눅스, 윈도우등에 사용이 가능하다.

 그리고 wxWidget이라는 클로스 플렛폼 GUI 라이브러리가 있어서 리눅스, 윈도우등의 소스를 한번에 제작이 가능하다.(단, 이것 또한 가상머신과 유사하게 돌아가는 방식이기 때문에, 유포할 경우, DLL 파일을 같이 넣어서 유포해줘야된다.)


 IDE(통합 개발 환경) 이기 때문에, 컴파일 장치로 보는게 맞지 않다.

 그래서, 컴파일러를 깔아야된다.


 Code::Blocks의 본 사이트에선 Downloads에서 MinGW랑 같이 설치 할 수 있게 되어 있다.


 그냥, 설치할 사람은 그걸 이용해서 설치하길 바란다.


 그게 아닌 사람들은, MinGW을 다운 받는다.


 MinGW 64Bit 다운받는 곳


 다운 받은 후에 설치를 한다.


 설치는 따라 맞춰서 설치하면 된다.


 


 맨 처음 열었을때, 이런 창이 뜻 것이다.

 여기서Settings -> Compiler을 클릭한다.



 이런 창이 뜨게 되는데, 이 창에서 Tollchain executables이라는 탭을 클릭한다.



 클릭하면, 이렇게 창이 뜨게되고, Compiler's installation directory 설정에서 파일을 찾게한다.

 이렇게하면, 파일을 설정되는데, MinGW의 bin파일이 기본적으로 설정되어 있고, 거기서 컴파일인 gcc와 g++, gfotran등 기본적인 프로그래밍 언어 컴파일러가 존재하며, 그 외도 as(GNU as)와 ar등의 툴까지 같이 있다.


 이것까지 제대로 설정이 되어 있으면, Code::Blocks의 설정이 끝난다.

'연습' 카테고리의 다른 글

Hexa Code Editor 만들기 -Windows에서 DOS 커서 이동.-  (0) 2015.11.23
Hexa Code Editor 만들기 -이진 파일 출력.-  (0) 2015.11.22
XWRT 문제점...  (0) 2015.11.15
GAR --Help  (0) 2015.11.11
GCC --help  (0) 2015.11.10
Posted by JunkMam
,

XWRT 문제점...

연습 2015. 11. 15. 09:30
 분명, XWRT로 압축해서 되돌아올때, 문제 없었는데, 다시 해보니깐, 문제가 일어나는 파일 몇개들이 보인다.

 XWRT는 문자에 대해서 맞춰진 압축 방식이라서 그런지, 바이너리파일을 돌렸을때, 복원이 안되는 문제가 생기는 것 같다.


 정확하게는 모르겠지만, 현재, 그렇게 해서 날아간 파일이 80개 가량이다.

 이미 원본을 날렸기 때문에, 복원은 불가...

 버릴 파일이지만, 추억때문에 남길려고 한 게임 파일들이라서, 그냥 포기하고 나은 방법을 찾을려고한다.

 어짜피 게임 출시 년도가 94년~04년들이기 때문에, 별 의미를 가질 필요는 없을 것 같다.


 요즘 게임을 하지 않고, 게임이야 프로그래밍을 배웠기 떄문에, 시간나면, 만들면 되는 것이다.



 XWRT는 XML에 맞춰져서 만들어진 압축 방법이라고 적혀 있다.

 즉, 바이너리 방식보단, 글자방식의 압축에 안전하게 처리할 수 있다라고 보는게 맞을 것 같다.

 바이너리를 글자방식으로 바꾸는 BASE64로 테스트해보는건 어떨까 생각중이다.



 바이너리에서 문제가 일어나는 경우가 있긴 하지만, 바이너리로 Compress Decompress을 둘다 문제가 없었다.


 이유를 알 수 없지만, BASE64로 해도 오히려 용량이 증가하는 문제가 있으니. 그냥, 바이너리로 압축하여 문제 없는지 확인하고 있는게 좋을 것 같다.

Posted by JunkMam
,

GAR --Help

연습 2015. 11. 11. 16:09

Usage: C:\Program Files\CodeBlocks\MinGW\bin\ar.exe [emulation options] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [member-name] [count] archive-file file...

       C:\Program Files\CodeBlocks\MinGW\bin\ar.exe -M [<mri-script]

 commands:

  d            - delete file(s) from the archive

  m[ab]        - move file(s) in the archive

  p            - print file(s) found in the archive

  q[f]         - quick append file(s) to the archive

  r[ab][f][u]  - replace existing or insert new file(s) into the archive

  s            - act as ranlib

  t            - display contents of archive

  x[o]         - extract file(s) from the archive

 command specific modifiers:

  [a]          - put file(s) after [member-name]

  [b]          - put file(s) before [member-name] (same as [i])

  [D]          - use zero for timestamps and uids/gids

  [U]          - use actual timestamps and uids/gids (default)

  [N]          - use instance [count] of name

  [f]          - truncate inserted file names

  [P]          - use full path names when matching

  [o]          - preserve original dates

  [u]          - only replace files that are newer than current archive contents

 generic modifiers:

  [c]          - do not warn if the library had to be created

  [s]          - create an archive index (cf. ranlib)

  [S]          - do not build a symbol table

  [T]          - make a thin archive

  [v]          - be verbose

  [V]          - display the version number

  @<file>      - read options from <file>

  --target=BFDNAME - specify the target object format as BFDNAME

 emulation options: 

  No emulation specific options

C:\Program Files\CodeBlocks\MinGW\bin\ar.exe: supported targets: pe-x86-64 pei-x86-64 elf64-x86-64 elf64-l1om elf64-k1om pe-i386 pei-i386 elf32-i386 elf64-little elf64-big elf32-little elf32-big srec symbolsrec verilog tekhex binary ihex

Report bugs to <mingw-w64-public@lists.sourceforge.net>



'연습' 카테고리의 다른 글

CodeBlocks 설치 및 설정하기.  (0) 2015.11.17
XWRT 문제점...  (0) 2015.11.15
GCC --help  (0) 2015.11.10
압축률 약 18%에, 메모리 량도 1.5G이내인 조금 좋은 압축 프로그램 -xwrt-  (0) 2015.11.09
GAS --help  (0) 2015.11.07
Posted by JunkMam
,

GCC --help

연습 2015. 11. 10. 22:52

Usage: gcc.exe [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={common|optimizers|params|target|warnings|[^]{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-multiarch         Display the target's normalized GNU triplet, used as

                           a component in the library path

  -print-multi-directory   Display the root directory for versions of libgcc

  -print-multi-lib         Display the mapping between command line options and

                           multiple library search directories

  -print-multi-os-directory Display the relative path to OS libraries

  -print-sysroot           Display the target libraries directory

  -print-sysroot-headers-suffix Display the sysroot suffix used to find headers

  -Wa,<options>            Pass comma-separated <options> on to the assembler

  -Wp,<options>            Pass comma-separated <options> on to the preprocessor

  -Wl,<options>            Pass comma-separated <options> on to the linker

  -Xassembler <arg>        Pass <arg> on to the assembler

  -Xpreprocessor <arg>     Pass <arg> on to the preprocessor

  -Xlinker <arg>           Pass <arg> on to the linker

  -save-temps              Do not delete intermediate files

  -save-temps=<arg>        Do not delete intermediate files

  -no-canonical-prefixes   Do not canonicalize paths when building relative

                           prefixes to other gcc components

  -pipe                    Use pipes rather than intermediate files

  -time                    Time the execution of each subprocess

  -specs=<file>            Override built-in specs with the contents of <file>

  -std=<standard>          Assume that the input sources are for <standard>

  --sysroot=<directory>    Use <directory> as the root directory for headers

                           and libraries

  -B <directory>           Add <directory> to the compiler's search paths

  -v                       Display the programs invoked by the compiler

  -###                     Like -v but options quoted and commands not executed

  -E                       Preprocess only; do not compile, assemble or link

  -S                       Compile only; do not assemble or link

  -c                       Compile and assemble, but do not link

  -o <file>                Place the output into <file>

  -pie                     Create a position independent executable

  -shared                  Create a shared library

  -x <language>            Specify the language of the following input files

                           Permissible languages include: c c++ assembler none

                           'none' means revert to the default behavior of

                           guessing the language based on the file's extension


Options starting with -g, -f, -m, -O, -W, or --param are automatically

 passed on to the various sub-processes invoked by gcc.exe.  In order to pass

 other options on to these processes the -W<letter> options must be used.


For bug reporting instructions, please see:

<mingw-w64-public@lists.sourceforge.net>.



'연습' 카테고리의 다른 글

XWRT 문제점...  (0) 2015.11.15
GAR --Help  (0) 2015.11.11
압축률 약 18%에, 메모리 량도 1.5G이내인 조금 좋은 압축 프로그램 -xwrt-  (0) 2015.11.09
GAS --help  (0) 2015.11.07
TANGELO - PAQ8 / FP8 에서 파생된 압축 파일 -  (0) 2015.11.05
Posted by JunkMam
,

 Hutter 상의 결과물을 본 것 중에 xwrt라는 프로그램을 찾아 봤다.[각주:1]


 압축률이 약 18%가량이고, 메모리 사용량도 약 1.5G이다.


 LPAQ6을 변경한 프로그램이다.


 여기서 LPAQ란, Lite PAQ의 약칭이다.

 Lite PAQ는, 가벼운 PAQ 모델을 만들고, 그 모델로 압축하는 프로그램이다.

 lpaq9m또한 Lite PAQ에 속하는 것이다.

 현재, Hutter 상을 받은 제품이 drt|lpaq9m이며, 이것은 압축률은 약 10위 안에 든다.

 거기에 처리속도, 메모리에서 효율적이며, 압축률 또한 높아서 받은 것 같다.


 Tangelo는 문제가 2G이상을 처리할 수 없다.(이건 drt|lpaq9m에서도 동일하다고 적혀 있다.)


 mcm은 2G이상은 처리할 수 있지만, 문제는 메모리 사용량에 문제이다.


 xwrt는 2G이상을 처리 할 수 있으며, Lite PAQ에 변형체인 만큼 메모리 량도 2G이상을 넘치지 않는다.(MCM은 Hutter 상의 결과물 만큼 볼려면, 5.6G이상의 메모리를 사용한다.)


 xwrt와 tangelo의 차이는

 xwrt는 paq에서도 lpaq에서 파생된 압축이고, tangelo는 paq에서 fpaq에서 파생된것이다.(fpaq의 약자로 fp라고 한다.)


 최대 값으로 처리하는 방법으로

 -l14 -b255 -m96 -s -e4000 -f200 대상 파일명.


 이렇게 처리한다.

 -l14는 level 14라는 뜻이고,

 -b255는 255의 수를 뜻하고,

 -e4000는 단어가 40000단어 라는 뜻이라고 한다.

 자세한건 도움말을 참조 할것.

  1. xwrt(2015-11-05) [본문으로]

'연습' 카테고리의 다른 글

GAR --Help  (0) 2015.11.11
GCC --help  (0) 2015.11.10
GAS --help  (0) 2015.11.07
TANGELO - PAQ8 / FP8 에서 파생된 압축 파일 -  (0) 2015.11.05
MCM -압축과 속도가 빠른 압축 툴-  (0) 2015.11.03
Posted by JunkMam
,