그래서는 (일반적으로) 계승을 계산이 코드 을 가지고 있지만이 예에서 10 .data 0x10008000
.word 10
.word 1
.word 0
.ascii "The factorial of 10 is %d \n"
.text
.globl main
main:
addi $sp, $sp, -32
내 작업은 MIPS 어셈블러에서 반복적으로 이집트 곱셈을 구현하는 것입니다. 관련 자료의 대부분을 이해했다고 생각하지만 한 가지를 배제 할 수는 없습니다. 최종 결과는 어떻게 계산됩니까? 이 코드의 예를 들어 (this 질문에서 가져온) : jal fact
및 L2
사이의 두 줄이 때 # int fact(int n)
fact:
subu sp, s
.data:
str2: .space 20
#read string
la $a0,str2
li $a1,20
li $v0,8
syscall
#print string
la $a0, str2
li $v0, 4
syscall
#print string
la $a0, str2
li $v0, 4
syscall
here 방향을 따라 MIPS 시스템 용 GLib 2.37.0을 크로스 컴파일하려고합니다. glib_cv_stack_grows=no
glib_cv_uscore=no
ac_cv_func_posix_getpwuid_r=no
ac_cv_func_posix_getgrgid_r=no
나는 다음과 같은 명령 줄을 사용하여 구성 스크립트를 호출하고 있습니다 :
MIPS를 배웠으므로 간단한 코드를 작성하고 SPIM을 사용하여 테스트하는 것이 좋습니다. 모든 레지스터를보고 코드를 단계별로 실행하면 각 지시가 무엇을했는지 이해할 수있었습니다. 거기에 x86 언어에 해당하는 에뮬레이터가 있습니까? 여기서는 간단한 코드를로드하고 각 레지스터를보고 각 지시를 단계별로 진행할 수 있습니까? 나는 강의에서 코드를 수행하고 복제
제 질문은 la과 li과 같은 의사 명령어의 사용법을 어떻게 해결해야하는지에 관한 것입니다. 어쨌든 많은 인터넷 소스가 단지 의사 명령어를 사용하기 때문에 어느 정도 혼란 스럽습니다. 이 문제의 일부는이 스 니펫에서 잘못되었습니다. 시뮬레이터는 liu 명령어로 구문 오류를 발생시키고 잘못된 점을 이해하지 못합니다. 제 생각에 liu 명령은 중요한 비트를 가
add와 addu의 차이점에 대해 혼란스러워합니다. MIPS의 명령 참조가 말한다 : (오버플로) 추가 서명되지 않은 추가 (오버 플로우 없음) 나의 이해는 서명되지 않은 피연산자 서명 피연산자와 아두으로 추가 사용하는 것입니다 . 그러나 이제 (만 6 비트와 함께)이 예를 살펴 보자
overflow
|
V
1 | 1 1 1 <- carry
MIPS에서 몇 개의 문자열을 인쇄하려고하는데 첫 번째 메시지를 인쇄하려고하면 프로그램이 모두 인쇄합니다. .data
first_msg: .ascii "Podaj pierwsza liczbe: "
second_msg: .ascii "Podaj druga liczbe: "
third_msg: .ascii "Wieksza z tych liczb jest
두 개의 정수로부터 빗변을 계산하는 MIPS 프로그램이 있습니다. 그러나 프로그램이 실제 결과가 아닌 이상한 숫자를 출력하기 때문에 제곱근 함수에 문제가있는 것 같습니다. 당신이 그것을 호출하기 전에 등록 $f0에 A*A + B*B를 계산하기 때문에 .data
prompt1: .asciiz "Enter value for A: "
prompt2: .asc
MIPS 프로세서가있는 임베디드 보드를 작업하고 있습니다. strace를 실행하는 동안 문제가 발생했습니다. 빌드 환경 : glibc version: 2.3.2
gcc version: 3.4.4
strace version: 4.4.94
linux version : 2.6.34.1
내가 MIPS 대상 및 대상에 strace를 실행하려고 크로스 컴파일