MARS 시뮬레이터를 사용하여 MIPS 어셈블리에 프로그램을 작성하고 있습니다. 함수의 호출을 위해 jal을 사용하고, 마지막에 jr $ra을 사용하여 프로그램의 원래 지점으로 돌아갑니다. 내가 혼란스러워하는 점은 메인 프로그램으로 돌아간 후에도 내 함수에서 사용한 $t 레지스터에 여전히 값이 있다는 것입니다. 임시 레지스터를 사용하는 향후 기능이 깨끗한
제목이 꽤 많이 요약되어 있습니다. 저는 학교 프로젝트를 위해 32 비트 MIPS 어셈블리 언어 (MARS 에뮬레이터 사용)로 프로그램을 작성 중이며 int 값이 2,147,483,647 이상인 행운을 보지 않았습니다. 나는 인터넷과 나의 책에서 쓸모없는 사냥에 알맞은 시간을 보냈다. 이것은 임무의 중심이 아닙니다 (불가능하다는 것을 알게되면, 이미 깨달았
데이터 세그먼트에 정의한 배열에 문자열 묶음이 있습니다. 배열에서 2 개의 문자열을 가져온다면 mips에서 더 큰 값을 가진 문자열을 비교할 수 있습니까? 어떻게하면 좋을까요? 기본적으로 알파벳 순서에 따라 문자열을 재정렬하려고합니다. 편집 :이 문제는 특정 문제에 대한 도움을 얻으려고 시도하는 것이 아니라 코드 접근 방법에 도움이되는 일반적인 질문에 대한
그래서 잠시 동안 지금까지 해왔으므로 알아낼 수 없습니다. MIPS에 C 삽입 정렬을 번역하여 문자열 목록을 정렬합니다. void insertSort(char *a[], size_t length) {
int i, j;
for(i = 1; i < length; i++) {
char *value = a[i];
for (j = i-1;
일반적으로 어셈블리 작성 및 테스트 및 디버깅에 문제가 없습니다. 하지만 때로는 컴파일러가 개행 문자를 좋아하지 않고 왜 그런지 모르겠습니다. .text
.globl __start
__start : la $a0,crlf
li $v0,4
syscall
li $v0,10
syscall
.data
CRLF : .asciiz "\ n" 내가
같은 기능을 수행하려면 어떻게해야합니까? lw을 사용하여 lbu을 사용하고 and 대신 다른 명령을 사용 하시겠습니까? .text
.globl __start
__start: # execution starts here
la $a0,st_b
lw $t0,4($a0)
and $t0,$t0,0xFF00FF00
slt이 ALU 연산으로 간주되는 이유는 무엇입니까? 나는 그것이 단지 빼기를 할 것이라고 생각했다. * Z * ALU로부터의 에로 출력?
ALU control lines | Function
-------------------+-------------------
0000 | AND
0001 | OR
0010