Если я хочу загрузить значение из памяти, которая базовый адрес на уровне $a0 и от $t2 набора, почему не может я делать следующее:
lw $s2, $a1($t2)
таким образом, каков эквивалент выражения выше?
Ответ Грега верен. Вот объяснение на примере:
У вас есть базовый класс Base. Имеется два производных класса ХА и ХБ. Каждый случай DerivedA - также случай Основы. Аналогично, каждый БВ также является Основанием. Но ХА не ХВ и наоборот. Таким образом, если бы вы нарисовали диаграмму Венна вселенной всех возможных объектов, вы бы получили:
________________________
/ \
/ Base \
/ ______ ______ \
| / \ / \ |
| / \ / \ |
| | DerivedA | | DerivedB | |
| \ / \ / |
| \______/ \______/ |
\ /
\ /
\________________________/
Другими словами, каждый объект в наборе объектов типа A также в наборе объектов типа Base. Аналогично для БР. Таким образом, Base действительно является супернабор как ХА, так и ХБ. Следовательно, это «суперкласс».
-121--2144604-Вот демонстрация с (упрощенным) примером, чтобы помочь расширить то, что сказал Марк:
void Main()
{
for (int x = 0; x < 10; x++)
{
ThreadPool.QueueUserWorkItem(z=> myClass.DoSomething());
}
}
public class myClass
{
public static void DoSomething()
{
int i = 0;
Console.WriteLine (i += 3);
}
}
The Output: 3 3 3 3 3 3 3 3 3 3 3
-121--3238834-Вы не можете сделать это, потому что нет кодировки команд MIPS, которая поддерживает такую вещь. Вы должны сделать сложение самостоятельно:
add $a2, $a1, $t2
lw $s2, 0($a2)
Кодировка команды lw
выглядит следующим образом:
1000 11ss ssst tttt iiii iiii iiii iiii
Где sssss
- номер исходного регистра, ttttt
- номер целевого регистра, а iiiiiiiiiiii
- немедленный. В этом кодировании нет места (и нет альтернативных кодировок команд), которые используют два регистра для генерации адреса памяти. Конкретная машинная команда, которая будет закодирована из приведенного выше примера:
1000 1100 1101 0010 0000 0000 0000 0000
Поскольку непосредственный - 0
, $ s2
является регистром 18
и $ a2
является регистром 6
.