1. mips gcc 설치

1
apt-get install gcc-mips-linux-gnu
cs


2. 코드 작성

1
2
3
4
5
6
7
8
9
➜  ubuntu vi a.c
➜  ubuntu cat a.c
int a[] = { -10x12340x00ff };
 
int main(){
    a[0= a[1];
    a[1= a[2];
    a[2= 10;
}
cs

3. mips gcc를 사용해서 asm으로 컴파일(-S 옵션), 최적화 제거(-O0)

1
➜  ubuntu mips-linux-gnu-gcc  a.c -S -O0
cs

4. filename.s 파일 확인

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
cat a.s
    .file    1 "a.c"
    .section .mdebug.abi32
    .previous
    .nan    legacy
    .module    fp=xx
    .module    nooddspreg
    .abicalls
    .globl    a
    .data
    .align    2
    .type    a, @object
    .size    a, 12
a:
    .word    -1
    .word    4660
    .word    255
    .text
    .align    2
    .globl    main
    .set    nomips16
    .set    nomicromips
    .ent    main
    .type    main, @function
main:
    .frame    $fp,8,$31        # vars= 0, regs= 1/0, args= 0, gp= 0
    .mask    0x40000000,-4
    .fmask    0x00000000,0
    .set    noreorder
    .set    nomacro
    addiu    $sp,$sp,-8
    sw    $fp,4($sp)
    move    $fp,$sp
    lui    $2,%hi(a)
    addiu    $2,$2,%lo(a)
    lw    $3,4($2)
    lui    $2,%hi(a)
    sw    $3,%lo(a)($2)
    lui    $2,%hi(a)
    addiu    $2,$2,%lo(a)
    lw    $3,8($2)
    lui    $2,%hi(a)
    addiu    $2,$2,%lo(a)
    sw    $3,4($2)
    lui    $2,%hi(a)
    addiu    $2,$2,%lo(a)
    li    $3,10            # 0xa
    sw    $3,8($2)
    move    $2,$0
    move    $sp,$fp
    lw    $fp,4($sp)
    addiu    $sp,$sp,8
    j    $31
    nop
 
    .set    macro
    .set    reorder
    .end    main
    .size    main, .-main
    .ident    "GCC: (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609"
cs





'기타' 카테고리의 다른 글

IDA struct gdb에 적용하기(gdb add struct)  (1) 2019.05.06
ocr 숫자  (0) 2018.09.19
gcc mips => asm  (0) 2018.09.18
라즈베리파이 IP 확인하기  (1) 2017.05.29
리눅스에서 C언어 컴파일  (0) 2017.05.05
windows 10 bash ssh  (0) 2016.12.28

+ Recent posts