diff --git a/src/main.rs b/src/main.rs index 0dfa6ac..6955238 100644 --- a/src/main.rs +++ b/src/main.rs @@ -6,6 +6,7 @@ use std::io::BufReader; use std::io::Read; use std::{cell::RefCell, rc::Rc}; +mod management; mod cpu; mod err; mod ext; @@ -20,6 +21,7 @@ struct VMRV32I { bus: Rc>, cpu: cpu::CPU, instruction_decoder: Rc>, + manager: management::Management, } impl VMRV32I { @@ -40,6 +42,7 @@ impl VMRV32I { cpu, bus, instruction_decoder, + manager: management::Management::new(), } } @@ -96,9 +99,11 @@ impl VMRV32I { fn main() { println!("VM Starting Up"); - + println!("VM Loading CPU Management Engine"); let mut vm = VMRV32I::new(); - let size = vm.load_prog("./test/c_test.bin"); + vm.manager.prompt(); + + let size = vm.load_prog("./test/test.bin"); vm.dump_prog(size); vm.dispatch(); } diff --git a/src/management.rs b/src/management.rs new file mode 100644 index 0000000..d0a9675 --- /dev/null +++ b/src/management.rs @@ -0,0 +1,50 @@ +use std::io::{stdin, Write}; + +pub struct VMAction { + action: Action, +} + +pub enum Action { + Load, + Step, + Run, + Inspect, + Dump, + Reg, +} + +pub struct Management { + pause: bool, +} + +impl Management { + pub fn new() -> Management { + Management { pause: true } + } + + pub fn vm_params() -> Vec { + vec![VMAction { action: Action::Load }] + } + + pub fn prompt(&self) -> Action { + print!("VM >> "); + std::io::stdout().flush().unwrap(); + + let mut input = String::new(); + stdin().read_line(&mut input).unwrap(); + + let mut parts = input.trim().split_whitespace(); + let command = parts.next().unwrap(); + let args = parts; + + match command { + "load" => Action::Load, + "step" => Action::Step, + "run" => Action::Run, + _ => { + println!("VM > Command {} not found", command); + self.prompt() + } + } + } +} diff --git a/test/Makefile b/test/Makefile index 9030a76..16d1866 100644 --- a/test/Makefile +++ b/test/Makefile @@ -1,10 +1,10 @@ -TARGET=c_test +TARGET=test GCC_PREFIX=riscv32-unknown-elf CFLAGS:=-fno-stack-protector CFLAGS+=-static-libgcc -fdata-sections -ffunction-sections CFLAGS+=-g -O0 -march=rv32ia -mabi=ilp32 -static -LDFLAGS:= -T flatfile.lds -nostdlib +LDFLAGS:= -T flatfile.lds -nostdlib all: build diff --git a/test/test b/test/test index 3d926de..d8c5641 100755 Binary files a/test/test and b/test/test differ diff --git a/test/test.S b/test/test.S index d8f5ed9..54cd01d 100644 --- a/test/test.S +++ b/test/test.S @@ -1,236 +1,16 @@ -.file "binary_search.c" - .option nopic - .text - .align 2 - .globl binary_search - .type binary_search, @function -binary_search: - addi sp,sp,-48 - sw ra,44(sp) - sw s0,40(sp) - addi s0,sp,48 - sw a0,-36(s0) - sw a1,-40(s0) - sw a2,-44(s0) - sw a3,-48(s0) - lw a4,-48(s0) - lw a5,-44(s0) - sub a5,a4,a5 - srli a4,a5,31 - add a5,a4,a5 - srai a5,a5,1 - mv a4,a5 - lw a5,-44(s0) - add a5,a5,a4 - sw a5,-20(s0) - lw a4,-44(s0) - lw a5,-48(s0) - ble a4,a5,.L2 - li a5,-1 - j .L3 -.L2: - lw a5,-20(s0) - slli a5,a5,2 - lw a4,-36(s0) - add a5,a4,a5 - lw a5,0(a5) - lw a4,-40(s0) - bne a4,a5,.L4 - lw a5,-20(s0) - j .L3 -.L4: - lw a5,-20(s0) - slli a5,a5,2 - lw a4,-36(s0) - add a5,a4,a5 - lw a5,0(a5) - lw a4,-40(s0) - bge a4,a5,.L5 - lw a5,-20(s0) - addi a5,a5,-1 - mv a3,a5 - lw a2,-44(s0) - lw a1,-40(s0) - lw a0,-36(s0) - call binary_search - mv a5,a0 - j .L3 -.L5: - lw a5,-20(s0) - addi a5,a5,1 - lw a3,-48(s0) - mv a2,a5 - lw a1,-40(s0) - lw a0,-36(s0) - call binary_search - mv a5,a0 -.L3: - mv a0,a5 - lw ra,44(sp) - lw s0,40(sp) - addi sp,sp,48 - jr ra - .size binary_search, .-binary_search - .align 2 - .globl search - .type search, @function -search: - addi sp,sp,-32 - sw ra,28(sp) - sw s0,24(sp) - addi s0,sp,32 - sw a0,-20(s0) - sw a1,-24(s0) - sw a2,-28(s0) - lw a5,-28(s0) - addi a5,a5,-1 - mv a3,a5 - li a2,0 - lw a1,-24(s0) - lw a0,-20(s0) - call binary_search - mv a5,a0 - mv a0,a5 - lw ra,28(sp) - lw s0,24(sp) - addi sp,sp,32 - jr ra - .size search, .-search - .align 2 - .globl sort - .type sort, @function -sort: - addi sp,sp,-48 - sw s0,44(sp) - addi s0,sp,48 - sw a0,-36(s0) - sw a1,-40(s0) - sw zero,-20(s0) - j .L9 -.L13: - sw zero,-24(s0) - j .L10 -.L12: - lw a5,-24(s0) - addi a5,a5,1 - slli a5,a5,2 - lw a4,-36(s0) - add a5,a4,a5 - lw a4,0(a5) - lw a5,-24(s0) - slli a5,a5,2 - lw a3,-36(s0) - add a5,a3,a5 - lw a5,0(a5) - bge a4,a5,.L11 - lw a5,-24(s0) - slli a5,a5,2 - lw a4,-36(s0) - add a5,a4,a5 - lw a5,0(a5) - sw a5,-28(s0) - lw a5,-24(s0) - addi a5,a5,1 - slli a5,a5,2 - lw a4,-36(s0) - add a4,a4,a5 - lw a5,-24(s0) - slli a5,a5,2 - lw a3,-36(s0) - add a5,a3,a5 - lw a4,0(a4) - sw a4,0(a5) - lw a5,-24(s0) - addi a5,a5,1 - slli a5,a5,2 - lw a4,-36(s0) - add a5,a4,a5 - lw a4,-28(s0) - sw a4,0(a5) -.L11: - lw a5,-24(s0) - addi a5,a5,1 - sw a5,-24(s0) -.L10: - lw a4,-40(s0) - lw a5,-20(s0) - sub a5,a4,a5 - addi a5,a5,-1 - lw a4,-24(s0) - blt a4,a5,.L12 - lw a5,-20(s0) - addi a5,a5,1 - sw a5,-20(s0) -.L9: - lw a5,-40(s0) - addi a5,a5,-1 - lw a4,-20(s0) - blt a4,a5,.L13 - nop - mv a0,a5 - lw s0,44(sp) - addi sp,sp,48 - jr ra - .size sort, .-sort - .section .rodata - .align 2 -.LC0: - .word 0 - .word 6 - .word 8 - .word 4 - .word 3 - .word 9 - .word 7 - .word 5 - .text - .align 2 - .globl main - .type main, @function main: - addi sp,sp,-64 - sw ra,60(sp) - sw s0,56(sp) - addi s0,sp,64 - lui a5,%hi(.LC0) - lw a7,%lo(.LC0)(a5) - addi a4,a5,%lo(.LC0) - lw a6,4(a4) - addi a4,a5,%lo(.LC0) - lw a0,8(a4) - addi a4,a5,%lo(.LC0) - lw a1,12(a4) - addi a4,a5,%lo(.LC0) - lw a2,16(a4) - addi a4,a5,%lo(.LC0) - lw a3,20(a4) - addi a4,a5,%lo(.LC0) - lw a4,24(a4) - addi a5,a5,%lo(.LC0) - lw a5,28(a5) - sw a7,-52(s0) - sw a6,-48(s0) - sw a0,-44(s0) - sw a1,-40(s0) - sw a2,-36(s0) - sw a3,-32(s0) - sw a4,-28(s0) - sw a5,-24(s0) - addi a5,s0,-52 - li a1,8 - mv a0,a5 - call sort - addi a5,s0,-52 - li a2,8 - li a1,9 - mv a0,a5 - call search - sw a0,-20(s0) - lw a5,-20(s0) - mv a0,a5 - lw ra,60(sp) - lw s0,56(sp) - addi sp,sp,64 - jr ra - .size main, .-main - .ident "GCC: (GNU) 7.2.0" + addi x3,x0,0 # s = 0 + addi x4,x0,0 # i = 0 + addi x5,x0,5 # const 5 + lui x6, 0x80000 + addi x6,x6,0x100 # base address of ax[] + addi x8,x0,0 # offset = 0 +loop: + bge x4, x5, exit + add x7, x6, x8 # compute effective address + lw x9, 0(x7) # get ax[i] + add x3, x3, x9 # s = s + ax[i] + addi x8, x8, 4 # next element + addi x4, x4, 1 # increment index + j loop +exit: diff --git a/test/test.bin b/test/test.bin index 2d63fee..3533142 100755 Binary files a/test/test.bin and b/test/test.bin differ diff --git a/test/test.hex b/test/test.hex index 12fc73f..97bd59e 100644 --- a/test/test.hex +++ b/test/test.hex @@ -1,51 +1,7 @@ -:10000000130101FD2326110223248102130401039D -:10001000232EA4FC232CB4FC232AC4FC2328D4FCC8 -:10002000032704FD832744FDB307F74013D7F701E7 -:10003000B307F70093D7174013870700832744FDC2 -:10004000B387E7002326F4FE032744FD832704FD3E -:1000500063D6E7009307F0FF6F0080088327C4FE94 -:10006000939727000327C4FDB307F70083A7070072 -:10007000032784FD6316F7008327C4FE6F00400644 -:100080008327C4FE939727000327C4FDB307F70017 -:1000900083A70700032784FD6354F7028327C4FE68 -:1000A0009387F7FF93860700032644FD832584FD8D -:1000B0000325C4FDEFF0DFF4930705006F00400255 -:1000C0008327C4FE93871700832604FD1386070049 -:1000D000832584FD0325C4FDEFF09FF293070500FF -:1000E000138507008320C102032481021301010349 -:1000F00067800000130101FE232E1100232C8100D4 -:10010000130401022326A4FE2324B4FE2322C4FEEA -:10011000832744FE9387F7FF9386070013060000AA -:10012000832584FE0325C4FEEFF09FED93070500B1 -:10013000138507008320C1010324810113010102FB -:1001400067800000130101FD2326810213040103CF -:10015000232EA4FC232CB4FC232604FE6F00C00C29 -:10016000232404FE6F00000A832784FE9387170070 -:10017000939727000327C4FDB307F70003A70700E1 -:10018000832784FE939727008326C4FDB387F60058 -:1001900083A707006352F706832784FE93972700FF -:1001A0000327C4FDB307F70083A707002322F4FE4B -:1001B000832784FE93871700939727000327C4FDA6 -:1001C0003307F700832784FE939727008326C4FD17 -:1001D000B387F6000327070023A0E700832784FEE8 -:1001E00093871700939727000327C4FDB307F700F1 -:1001F000032744FE23A0E700832784FE938717008C -:100200002324F4FE032784FD8327C4FEB307F740AD -:100210009387F7FF032784FEE348F7F48327C4FEA0 -:10022000938717002326F4FE832784FD9387F7FF27 -:100230000327C4FEE346F7F213000000138507000E -:100240000324C1021301010367800000130101FCB4 -:10025000232E1102232C8102130401048328802FF2 -:100260001307802F032847001307802F03258700DB -:100270001307802F8325C7001307802F032607014C -:100280001307802F832647011307802F0327870139 -:100290009307802F83A7C701232614FD232804FD7D -:1002A000232AA4FC232CB4FC232EC4FC2320D4FE3C -:1002B0002322E4FE2324F4FE9307C4FC930580006C -:1002C00013850700EFF01FE89307C4FC13068000B6 -:1002D0009305900013850700EFF0DFE12326A4FECD -:1002E0008327C4FE138507008320C10303248103F1 -:0802F000130101046780000006 -:1002F80000000000060000000800000004000000E4 -:1003080003000000090000000700000005000000CD +:0200000480007A +:1000000093010000130200009302500037030080A8 +:100010001303031013040000635E5200B303830054 +:1000200083A40300B381910013044400130212005F +:040030006FF09FFED0 +:040000058000000077 :00000001FF diff --git a/test/test.lst b/test/test.lst index 6205866..6ef56ce 100644 --- a/test/test.lst +++ b/test/test.lst @@ -1,203 +1,22 @@ -test: file format elf64-littleriscv +test: file format elf32-littleriscv Disassembly of section .text: -0000000000000000 : - 0: fd010113 addi sp,sp,-48 - 4: 02112623 sw ra,44(sp) - 8: 02812423 sw s0,40(sp) - c: 03010413 addi s0,sp,48 - 10: fca42e23 sw a0,-36(s0) - 14: fcb42c23 sw a1,-40(s0) - 18: fcc42a23 sw a2,-44(s0) - 1c: fcd42823 sw a3,-48(s0) - 20: fd042703 lw a4,-48(s0) - 24: fd442783 lw a5,-44(s0) - 28: 40f707b3 sub a5,a4,a5 - 2c: 01f7d713 srli a4,a5,0x1f - 30: 00f707b3 add a5,a4,a5 - 34: 4017d793 srai a5,a5,0x1 - 38: 00078713 addi a4,a5,0 - 3c: fd442783 lw a5,-44(s0) - 40: 00e787b3 add a5,a5,a4 - 44: fef42623 sw a5,-20(s0) - 48: fd442703 lw a4,-44(s0) - 4c: fd042783 lw a5,-48(s0) - 50: 00e7d663 bge a5,a4,5c - 54: fff00793 addi a5,zero,-1 - 58: 0880006f jal zero,e0 - 5c: fec42783 lw a5,-20(s0) - 60: 00279793 slli a5,a5,0x2 - 64: fdc42703 lw a4,-36(s0) - 68: 00f707b3 add a5,a4,a5 - 6c: 0007a783 lw a5,0(a5) - 70: fd842703 lw a4,-40(s0) - 74: 00f71663 bne a4,a5,80 - 78: fec42783 lw a5,-20(s0) - 7c: 0640006f jal zero,e0 - 80: fec42783 lw a5,-20(s0) - 84: 00279793 slli a5,a5,0x2 - 88: fdc42703 lw a4,-36(s0) - 8c: 00f707b3 add a5,a4,a5 - 90: 0007a783 lw a5,0(a5) - 94: fd842703 lw a4,-40(s0) - 98: 02f75463 bge a4,a5,c0 - 9c: fec42783 lw a5,-20(s0) - a0: fff78793 addi a5,a5,-1 - a4: 00078693 addi a3,a5,0 - a8: fd442603 lw a2,-44(s0) - ac: fd842583 lw a1,-40(s0) - b0: fdc42503 lw a0,-36(s0) - b4: f4dff0ef jal ra,0 - b8: 00050793 addi a5,a0,0 - bc: 0240006f jal zero,e0 - c0: fec42783 lw a5,-20(s0) - c4: 00178793 addi a5,a5,1 - c8: fd042683 lw a3,-48(s0) - cc: 00078613 addi a2,a5,0 - d0: fd842583 lw a1,-40(s0) - d4: fdc42503 lw a0,-36(s0) - d8: f29ff0ef jal ra,0 - dc: 00050793 addi a5,a0,0 - e0: 00078513 addi a0,a5,0 - e4: 02c12083 lw ra,44(sp) - e8: 02812403 lw s0,40(sp) - ec: 03010113 addi sp,sp,48 - f0: 00008067 jalr zero,0(ra) +80000000
: +80000000: 00000193 addi gp,zero,0 +80000004: 00000213 addi tp,zero,0 +80000008: 00500293 addi t0,zero,5 +8000000c: 80000337 lui t1,0x80000 +80000010: 10030313 addi t1,t1,256 # 80000100 +80000014: 00000413 addi s0,zero,0 -00000000000000f4 : - f4: fe010113 addi sp,sp,-32 - f8: 00112e23 sw ra,28(sp) - fc: 00812c23 sw s0,24(sp) - 100: 02010413 addi s0,sp,32 - 104: fea42623 sw a0,-20(s0) - 108: feb42423 sw a1,-24(s0) - 10c: fec42223 sw a2,-28(s0) - 110: fe442783 lw a5,-28(s0) - 114: fff78793 addi a5,a5,-1 - 118: 00078693 addi a3,a5,0 - 11c: 00000613 addi a2,zero,0 - 120: fe842583 lw a1,-24(s0) - 124: fec42503 lw a0,-20(s0) - 128: ed9ff0ef jal ra,0 - 12c: 00050793 addi a5,a0,0 - 130: 00078513 addi a0,a5,0 - 134: 01c12083 lw ra,28(sp) - 138: 01812403 lw s0,24(sp) - 13c: 02010113 addi sp,sp,32 - 140: 00008067 jalr zero,0(ra) - -0000000000000144 : - 144: fd010113 addi sp,sp,-48 - 148: 02812623 sw s0,44(sp) - 14c: 03010413 addi s0,sp,48 - 150: fca42e23 sw a0,-36(s0) - 154: fcb42c23 sw a1,-40(s0) - 158: fe042623 sw zero,-20(s0) - 15c: 0cc0006f jal zero,228 - 160: fe042423 sw zero,-24(s0) - 164: 0a00006f jal zero,204 - 168: fe842783 lw a5,-24(s0) - 16c: 00178793 addi a5,a5,1 - 170: 00279793 slli a5,a5,0x2 - 174: fdc42703 lw a4,-36(s0) - 178: 00f707b3 add a5,a4,a5 - 17c: 0007a703 lw a4,0(a5) - 180: fe842783 lw a5,-24(s0) - 184: 00279793 slli a5,a5,0x2 - 188: fdc42683 lw a3,-36(s0) - 18c: 00f687b3 add a5,a3,a5 - 190: 0007a783 lw a5,0(a5) - 194: 06f75263 bge a4,a5,1f8 - 198: fe842783 lw a5,-24(s0) - 19c: 00279793 slli a5,a5,0x2 - 1a0: fdc42703 lw a4,-36(s0) - 1a4: 00f707b3 add a5,a4,a5 - 1a8: 0007a783 lw a5,0(a5) - 1ac: fef42223 sw a5,-28(s0) - 1b0: fe842783 lw a5,-24(s0) - 1b4: 00178793 addi a5,a5,1 - 1b8: 00279793 slli a5,a5,0x2 - 1bc: fdc42703 lw a4,-36(s0) - 1c0: 00f70733 add a4,a4,a5 - 1c4: fe842783 lw a5,-24(s0) - 1c8: 00279793 slli a5,a5,0x2 - 1cc: fdc42683 lw a3,-36(s0) - 1d0: 00f687b3 add a5,a3,a5 - 1d4: 00072703 lw a4,0(a4) - 1d8: 00e7a023 sw a4,0(a5) - 1dc: fe842783 lw a5,-24(s0) - 1e0: 00178793 addi a5,a5,1 - 1e4: 00279793 slli a5,a5,0x2 - 1e8: fdc42703 lw a4,-36(s0) - 1ec: 00f707b3 add a5,a4,a5 - 1f0: fe442703 lw a4,-28(s0) - 1f4: 00e7a023 sw a4,0(a5) - 1f8: fe842783 lw a5,-24(s0) - 1fc: 00178793 addi a5,a5,1 - 200: fef42423 sw a5,-24(s0) - 204: fd842703 lw a4,-40(s0) - 208: fec42783 lw a5,-20(s0) - 20c: 40f707b3 sub a5,a4,a5 - 210: fff78793 addi a5,a5,-1 - 214: fe842703 lw a4,-24(s0) - 218: f4f748e3 blt a4,a5,168 - 21c: fec42783 lw a5,-20(s0) - 220: 00178793 addi a5,a5,1 - 224: fef42623 sw a5,-20(s0) - 228: fd842783 lw a5,-40(s0) - 22c: fff78793 addi a5,a5,-1 - 230: fec42703 lw a4,-20(s0) - 234: f2f746e3 blt a4,a5,160 - 238: 00000013 addi zero,zero,0 - 23c: 00078513 addi a0,a5,0 - 240: 02c12403 lw s0,44(sp) - 244: 03010113 addi sp,sp,48 - 248: 00008067 jalr zero,0(ra) - -000000000000024c
: - 24c: fc010113 addi sp,sp,-64 - 250: 02112e23 sw ra,60(sp) - 254: 02812c23 sw s0,56(sp) - 258: 04010413 addi s0,sp,64 - 25c: 2f802883 lw a7,760(zero) # 2f8 - 260: 2f800713 addi a4,zero,760 - 264: 00472803 lw a6,4(a4) - 268: 2f800713 addi a4,zero,760 - 26c: 00872503 lw a0,8(a4) - 270: 2f800713 addi a4,zero,760 - 274: 00c72583 lw a1,12(a4) - 278: 2f800713 addi a4,zero,760 - 27c: 01072603 lw a2,16(a4) - 280: 2f800713 addi a4,zero,760 - 284: 01472683 lw a3,20(a4) - 288: 2f800713 addi a4,zero,760 - 28c: 01872703 lw a4,24(a4) - 290: 2f800793 addi a5,zero,760 - 294: 01c7a783 lw a5,28(a5) - 298: fd142623 sw a7,-52(s0) - 29c: fd042823 sw a6,-48(s0) - 2a0: fca42a23 sw a0,-44(s0) - 2a4: fcb42c23 sw a1,-40(s0) - 2a8: fcc42e23 sw a2,-36(s0) - 2ac: fed42023 sw a3,-32(s0) - 2b0: fee42223 sw a4,-28(s0) - 2b4: fef42423 sw a5,-24(s0) - 2b8: fcc40793 addi a5,s0,-52 - 2bc: 00800593 addi a1,zero,8 - 2c0: 00078513 addi a0,a5,0 - 2c4: e81ff0ef jal ra,144 - 2c8: fcc40793 addi a5,s0,-52 - 2cc: 00800613 addi a2,zero,8 - 2d0: 00900593 addi a1,zero,9 - 2d4: 00078513 addi a0,a5,0 - 2d8: e1dff0ef jal ra,f4 - 2dc: fea42623 sw a0,-20(s0) - 2e0: fec42783 lw a5,-20(s0) - 2e4: 00078513 addi a0,a5,0 - 2e8: 03c12083 lw ra,60(sp) - 2ec: 03812403 lw s0,56(sp) - 2f0: 04010113 addi sp,sp,64 - 2f4: 00008067 jalr zero,0(ra) +80000018 : +80000018: 00525e63 bge tp,t0,80000034 +8000001c: 008303b3 add t2,t1,s0 +80000020: 0003a483 lw s1,0(t2) +80000024: 009181b3 add gp,gp,s1 +80000028: 00440413 addi s0,s0,4 +8000002c: 00120213 addi tp,tp,1 # 1 +80000030: fe9ff06f jal zero,80000018 diff --git a/test/test.map b/test/test.map index 108457f..82647ec 100644 --- a/test/test.map +++ b/test/test.map @@ -1,23 +1,19 @@ -test: file format elf64-littleriscv +test: file format elf32-littleriscv SYMBOL TABLE: -0000000000000000 l d .text 0000000000000000 .text -00000000000002f8 l d .rodata 0000000000000000 .rodata -0000000000000000 l d .comment 0000000000000000 .comment -0000000000000000 l d .riscv.attributes 0000000000000000 .riscv.attributes -0000000000000000 l df *ABS* 0000000000000000 binary_search.c -0000000000001b18 g *ABS* 0000000000000000 __global_pointer$ -00000000000000f4 g F .text 0000000000000050 search -0000000000001318 g .rodata 0000000000000000 __SDATA_BEGIN__ -0000000000000144 g F .text 0000000000000108 sort -0000000000000000 *UND* 0000000000000000 _start -0000000000001318 g .rodata 0000000000000000 __BSS_END__ -0000000000001318 g .rodata 0000000000000000 __bss_start -000000000000024c g F .text 00000000000000ac main -0000000000001318 g .rodata 0000000000000000 __DATA_BEGIN__ -0000000000001318 g .rodata 0000000000000000 _edata -0000000000001318 g .rodata 0000000000000000 _end -0000000000000000 g F .text 00000000000000f4 binary_search +80000000 l d .text 00000000 .text +00000000 l d .riscv.attributes 00000000 .riscv.attributes +00000000 l d .debug_line 00000000 .debug_line +00000000 l d .debug_line_str 00000000 .debug_line_str +00000000 l d .debug_info 00000000 .debug_info +00000000 l d .debug_abbrev 00000000 .debug_abbrev +00000000 l d .debug_aranges 00000000 .debug_aranges +00000000 l d .debug_str 00000000 .debug_str +00000000 l df *ABS* 00000000 ccSaJ0Sk.o +80000000 l .text 00000000 main +80000018 l .text 00000000 loop +80000034 l .text 00000000 exit +00000000 *UND* 00000000 _start