Arrays 汇编:将寄存器从C分配到数组中
我有一个C语言的代码,我需要把它翻译成汇编语言。 有没有一个简单的方法可以做到这一点 C代码:Arrays 汇编:将寄存器从C分配到数组中,arrays,c,assembly,mips,Arrays,C,Assembly,Mips,我有一个C语言的代码,我需要把它翻译成汇编语言。 有没有一个简单的方法可以做到这一点 C代码: int size, i; printf("Type array size:"); scanf("%d", &size); int vector[size]; for (i = 0; i<size; i++){ printf("type value of array[%
int size, i;
printf("Type array size:");
scanf("%d", &size);
int vector[size];
for (i = 0; i<size; i++){
printf("type value of array[%d]: ", i);
scanf("%d", &vector[i]);
}
需要使用计数器,并且需要在循环内更新其值
.data
vec: .space 0
size: .asciiz "\n\n Type array size:"
prompt: .asciiz "Type value of array:["
closebrack: .asciiz "]"
.text
.globl main
main:
la $a1, vec
li $t0, 0 #counter=0
li $v0, 4
la $a0, size
syscall
li $v0, 5
syscall
move $a2, $v0 #$a2 holds array size
j Loop
Loop:
beq $a2, $t1, END
li $v0, 4
la $a0, prompt
syscall
add, $t0, 1 #counter++
move $a0, $t0
li $v0, 1 #print counter
syscall
li $v0, 4
la $a0, closebrack # print the closing bracket "]"
syscall
li $v0,5 #gets value as printf
syscall
move $s1,$v0
sw $s1, 0($a1)
la $a1, 4($a1) #moves on to next value of the array
addi $t1, $t1, 1
j Loop
END:
li, $v0,10
syscall
这肯定不是英特尔,看起来更像mips。无论如何,如果你的数组是静态的,只需在你的数据部分分配4个字,并将项目存储在那里。欢迎访问该站点。您可以使用代码块进行编码。
vec:.space 0
不保留任何字节。如果要匹配C语义,需要在堆栈上保留可变的空间量。
.data
vec: .space 0
size: .asciiz "\n\n Type array size:"
prompt: .asciiz "Type value of array:["
closebrack: .asciiz "]"
.text
.globl main
main:
la $a1, vec
li $t0, 0 #counter=0
li $v0, 4
la $a0, size
syscall
li $v0, 5
syscall
move $a2, $v0 #$a2 holds array size
j Loop
Loop:
beq $a2, $t1, END
li $v0, 4
la $a0, prompt
syscall
add, $t0, 1 #counter++
move $a0, $t0
li $v0, 1 #print counter
syscall
li $v0, 4
la $a0, closebrack # print the closing bracket "]"
syscall
li $v0,5 #gets value as printf
syscall
move $s1,$v0
sw $s1, 0($a1)
la $a1, 4($a1) #moves on to next value of the array
addi $t1, $t1, 1
j Loop
END:
li, $v0,10
syscall