1.使用visua C++撰寫C語言,並確定正確性
2.使用lcc 編譯組合語言 lcc –Wf-target=mips/irix –S 檔案名稱.c
3.使用C語言修改組合語言
4.使用PCSpim測試正確性,並儲存資料成PCSpim.log
5.使用C語言擷取PCSpim.log內所需要的資料並轉換成verilog可用之格式
執行過程如下:
c語言
#include
main(){
float a=6.3,b=2.1,c=1.1,div;
div=a/b;
c=div/c;
//printf("%f %f",div,c);
}
執行結果:
使用lcc轉換並修改過後的程式碼如下:
lw $4, 0($29)
addiu $5, $29, 4
addiu $6, $5, 4
sll $2, $4, 2
addu $6, $6, $2
jal 0x00400024 [main]
nop
ori $2, $0, 10
syscall (exit)
addiu $29, $29, -64
sdc1 $f30, 0($29)
sw $30, 8($29)
addi $24, $29, 20
lui $8, 4097 [L.2]
addiu $8, $8, 40
addiu $10, $24, 40
lw $3, 0($8)
sw $3, 0($10)
addiu $8, $8, -8
addiu $10, $10, -8
lw $3, 0($8)
lw $9, 4($8)
sw $3, 0($10)
sw $9, 4($10)
sltu $1, $24, $10
bne $1, $0, -28 [L.9-0x00400064]
lui $1, 4097 [L.3]
lwc1 $f30, 44($1) [L.3]
ori $30, $0, 1
sll $24, $30, 2
addi $15, $29, 20
addu $15, $24, $15
addi $14, $29, 16
addu $24, $24, $14
lwc1 $f18, 0($24)
add.s $f18, $f18, $f30
swc1 $f18, 0($15)
addi $30, $30, 1
ori $24, $0, 10
slt $1, $24, $30
beq $1, $0, -44 [L.4-0x004000a0]
addu $2, $0, $0
ldc1 $f30, 0($29)
lw $30, 8($29)
addiu $29, $29, 64
jr $31 ; 56: j $31
擷取指令與部分資料如下(並未顯示全部)
轉換成二進制碼(只顯示資料部份)
轉換成verilog可只用的格式
沒有留言:
張貼留言