MIPS Assembly: Как сохранить ответ в переменной «word» в памяти? [Дубликат]

Все объекты гарантированно имеют метод .equals(), поскольку Object содержит метод, .equals(), который возвращает логическое значение. Задача подкласса переопределять этот метод, если требуется дополнительное определение определения. Без него (т. Е. С помощью ==) только адреса памяти проверяются между двумя объектами для равенства. String переопределяет этот метод .equals() и вместо использования адреса памяти возвращает сравнение строк на уровне символа для равенства.

Ключевое замечание состоит в том, что строки хранятся в одном пуле, поэтому после создания строки он всегда хранится в программе по тому же адресу. Строки не меняются, они неизменяемы. Вот почему это плохая идея использовать регулярную конкатенацию строк, если у вас есть серьезное количество обработки строк. Вместо этого вы будете использовать предоставленные классы StringBuilder. Помните, что указатели на эту строку могут измениться, и если вам было интересно увидеть, были ли два указателя одинаковыми ==, это был бы прекрасный способ. Строки сами не делают.

1
задан JG55 2 October 2017 в 20:41
поделиться

2 ответа

3
ответ дан Ped7g 16 August 2018 в 02:51
поделиться

Это с сайта: http://courses.missouristate.edu/KenVollmar/mars/Help/MarsHelpDebugging.html

Memory addresses and values, and register values, can be viewed in either
decimal or hexadecimal format. All data are stored in little-endian
byte order (each word consists of byte 3 followed by byte 2 then 1 then 0).
Note that each word can hold 4 characters of a string and those 4 
characters will appear in the reverse order from that of the string literal

Как вы можете это видеть является малоконечным

4
ответ дан KnucklePunch 16 August 2018 в 02:51
поделиться
  • 1
    В маленьком-endian мире вычисляете байты из LSB, поэтому они сохраняются в порядке 0,1,2,3. Я предполагаю, что авторы документа Марса не согласны с тем, как считать число байтов, но, по-видимому, они правы, описывая это как мало-endian. (gcc называет этот режим MIPS (el), так как MIPS также поддерживает big-endian.) – Peter Cordes 2 October 2017 в 21:31
  • 2
    Но если это немного, то почему байты загружаются в регистр так, как если бы он был большим эндизиатом? – JG55 2 October 2017 в 21:48
  • 3
    @ JG55: Это не так. .byte 0,0,0,1, загруженный в регистр с помощью lw, должен дать вам 0x01000000, который соответствует вашим наблюдениям. – Michael 3 October 2017 в 05:39
Другие вопросы по тегам:

Похожие вопросы: