다음에 루이. lui $t9 , 0x802f
...는 $t9으로 아무것도하지 않습니다 ... 그리고 점프하지 않습니다 .. lbu $t9, 0x200+var_24($sp)
을 그리고 그것은 나에게 아무런 의미가 없습니다. 첫 번째 줄의 : $t9은 0x802F0000이됩니다. 두 번째 줄의 : $t9은 스택의 해당 위치에 저장되는 바이트가됩니다.
이것은 숙제 문제입니다. 내 코드가 올바른 답을 제공합니다. 내가했던 것처럼 해결책을 쓰는 것은 끔찍하게 혼란 스러웠고, 나를 데려 갔다. 이 코드를 코딩하는 더 좋은 방법이 있습니까? 최적화가 꺼져과 # Convert to MIPS: (((5 + 1) - (1 + 3) + (5 - 3)) - 1) – 5 + 3
main:
li $t0 5
내 컴퓨터가 bigendian 순서로 정수를 저장하는 것으로 보입니다. 예를 들어 0xFF440022는 4 282 646 562입니다. 그러나 리틀 엔디안 순서로 문자열 데이터를 저장합니까? 예. 안녕하세요 세상은 과 같습니다. 왜 이런거야? 이 기계가 빅 엔디안 또는 리틀 엔디안으로 간주됩니까?
Patterson과 Hennessy가 'Computer Organization and Design'이라는 책을 읽고 MIPS에 관심을 보였습니다. 점프/분기 명령어의 범위를 찾는 데 의의가 있습니다. 또한 특정 주소에 도달하는 데 필요한 분기/점프 명령어의 수를 결정할 때도 마찬가지입니다. 다른 사람이 특정 주소에서 PC를 고려하고 다른 주소로 이동하는 데
나는 약간의 문제가있어 주위를 둘러 볼 수 없습니다. 다음과 같은 방식으로 스택에 여러 개의 숫자가 저장되어 있습니다. |5| 0($sp)
|4| 4($sp)
|3|
|8|
한 번에 두 숫자를 비교하여 스택을 탐색하려고합니다. 이것에 의해, 0 ($ sp)과 4 ($ sp) 그리고 0 ($ sp)와 8 ($ sp), ... 그리고 4 ($ sp)와
embedded device을 기준으로 MIPS에 대한 애플리케이션을 개발하고 싶습니다. 나는 mipsel-elf-g++ 크로스 컴파일러를 사용하고있다. 나는 간단한 코드를 다음과 같이 구현한다. class A {
public:
virtual int getValue();
}
class B : public A {
에서 변수를 저장 나는 기초의 가치를 계산의 내부에 저장합니까? 로드 및 저장에 대한 유일한 지침은 lw 및 sw이며 프로토 타입은 레지스터 소스 -> 램 대상 또는 램 소스 -> 레지스터 대상에서만 사용됩니다. 도움을 주시면 감사하겠습니다. 편집 나는이가 move base acc 처럼 단일 명령어에 뭔가를 수행하지만 분명히 그건 불가능하다 될 수 있다고
범위 초과 오류 해결 : MIPS에 if (op == '+') {
acc += val;
}
을, 나는 범위 에러 밖으로 주소 원인을 알아낼 수 없습니다 #reads user input for the op
li $v0, 12 # system call number for operator
syscall # reads the int
먼저,이 말을 ... 누구에게도 내게 대답을주기를 원하지 않습니다 ... 올바른 방향으로 향하고 싶습니다! 나는 예를 들어 ....이 프로그램에 정수 배열을 가지고 : numbers:
.word 17
.word -50
.word 1
.word -999
나는 그들을 통해 실행하고 새로운 행에 각 하나를 인쇄하는 동안 루
이 C 코드를 MIPS 어셈블리로 변환해야합니다. int tmp = 0;
for (int j = 0; j < 15; ++j)
tmp = tmp * 2 + 3
이 내 MIPS 어셈블리 코드 : 다음은 C 코드입니다. 올바른 번역입니까? 실수를하는 경우에는 알고 싶습니다. # tmp = $v0
# j = $t0
.globl main
ma