Эта инструкция неверна? (movabs% al, 0xe400000000004049) - PullRequest
0 голосов
/ 28 марта 2012

Я отлаживаю некоторые программы.В отладке для каждой инструкции (Eclipse CDT) я сталкивался с этим:

movabs %al,0xe400000000004049
rex.WB

После выполнения инструкции movabs отладка завершается с помощью SEGV.Я видел эти инструкции, из которых вторая даже не похожа на одну, хе.

Может быть, это не вызвано, но я лучше спросить.

Это синтаксис ассемблера GNU,когда я работаю в Linux Gentoo 64bit, мой процессор Intel 2600K (i7 second gen).

Ответы [ 2 ]

6 голосов
/ 29 марта 2012

Инструкция

movabs %al,0xe400000000004049

должна хранить значение al в адресе 0xe400000000004049.Последний адрес недействителен, потому что в современных архитектурах x86_64 старшие 17 (семнадцать) бит адресов должны быть либо все ноль, либо все одно.Или по-другому, текущее виртуальное адресное пространство расширено на 48 битов, то есть от 0xffff 8000 0000 0000 до 0x0000 7fff ffff ffff.

Это может измениться в будущем, но мы, скорее всего, увидим некоторые поколения процессоровприходи и уходи.

0 голосов
/ 28 марта 2012
0xe400000000004049

Migth быть немного большим, чтобы положить в al. на x86 (32 бита) AL (8 бит) является частью EAX (32-битный регистр) Так что я предполагаю (возможно, неправильно), что на 64-битной арке AL составляет 16 бит => 0xFFFF max.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...