Изменить строку во внешней функции сборки [duplicate]

Или сделать контурный интеграл. Теорема Стокса позволяет выразить интеграл области как контурный интеграл. Маленькая квадратура Гаусса и ваш дядя Боб.

6
задан freenight 28 March 2010 в 03:26
поделиться

3 ответа

Число перед скобкой - это смещение байта (которое вызывает обращение к памяти), и вы не можете иметь два из них с movl. Вам нужно сначала переместить значение в регистр.

movl 4(%ebp), %ecx
movl %ecx, 8(%ebp)
7
ответ дан Marc W 17 August 2018 в 19:45
поделиться

Это не юридическая инструкция. Для большинства инструкций, которые ссылаются на память, вы должны перенести их в / из регистра.

2
ответ дан James K Polk 17 August 2018 в 19:45
поделиться

movl не перемещается в память-память, вам нужно пройти через регистр (таким образом, с двумя инструкциями movl).

2
ответ дан Alex Martelli 17 August 2018 в 19:45
поделиться
  • 1
    спасибо, но почему это? это архитектура процессора, которая ограничивает это или что-то еще? – freenight 28 March 2010 в 03:34
  • 2
    Да, это ограничение в CPU. MOVS - это единственная команда памяти на память. – Jerry Coffin 28 March 2010 в 03:46
  • 3
    Да, память-в-память просто не может быть реализована так эффективно (процессоры non-x86, как правило, имеют все инструкции, которые просто регистрируются для регистрации, причем load / store - единственные регистро-память). – Alex Martelli 28 March 2010 в 04:02
Другие вопросы по тегам:

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