Здравствуйте, roman313, Вы писали:
R>Hi !
R>В 32-битном режиме я могу сделать так:
R>.data
R>SuperAddress dd 0
R>.code
R>super proc R>... код R>super endp
Вот такой плохой AMD, не придумал такой команды. mov r64, imm64 есть, а mov [r64], imm64 нет
см:
ntel® 64 and IA-32 Architectures Software Developer’s Manual Volume 2A:
Instruction Set Reference, A-M
- но FASM все нормально компилирует,
и в дизассемблере получается код вида
mov [rax], адрес нужной функции
Так что непонятно, почему
Здравствуйте, Сергей Мухин, Вы писали:
СМ>Здравствуйте, roman313, Вы писали:
R>>Hi !
R>>В 32-битном режиме я могу сделать так:
R>>.data
R>>SuperAddress dd 0
R>>.code
R>>super proc R>>... код R>>super endp
СМ>Вот такой плохой AMD, не придумал такой команды. mov r64, imm64 есть, а mov [r64], imm64 нет
СМ>см: СМ>ntel® 64 and IA-32 Architectures Software Developer’s Manual Volume 2A: СМ>Instruction Set Reference, A-M
Здравствуйте, roman313, Вы писали:
R>- но FASM все нормально компилирует, R>и в дизассемблере получается код вида
R>mov [rax], адрес нужной функции
R>Так что непонятно, почему
код команды: 48c7c000204000 mov rax, offset ячейка памяти
код команда: 48c700b3114000 mov qword ptr [rax], offset адрес некоей функции
FASM эту конструкцию нормально прогоняет, и программа работает.
Да и в 64-битном режиме все правильно с точки зренияч синтаксиса,
думаю, что это баг MASM
mov qword ptr [rax], offset xxx — все должно работать, но в MASM не проглатывает.
он проглатывает только так:
mov rcx, offset xxx
mov [rax], rcx — тогда OK
Здравствуйте, Сергей Мухин, Вы писали:
СМ>Здравствуйте, roman313, Вы писали:
R>>- но FASM все нормально компилирует, R>>и в дизассемблере получается код вида
R>>mov [rax], адрес нужной функции
R>>Так что непонятно, почему
СМ>Покажи коды команд.
Здравствуйте, roman313, Вы писали:
R>Да пожалуйста:
R>64-битная программа, скомпилированная FASM:
R>код команды: 48c7c000204000 mov rax, offset ячейка памяти R>код команда: 48c700b3114000 mov qword ptr [rax], offset адрес некоей функции
R>FASM эту конструкцию нормально прогоняет, и программа работает. R>Да и в 64-битном режиме все правильно с точки зренияч синтаксиса, R>думаю, что это баг MASM
спасибо. я посмотрю внимательней завтра. А вот в каком порядке описаны super proc и Main proc?
Тут немного модификация — R>>код команды: 48c7c000204000 mov rax, offset ячейка памяти в секции дата (адрес больше WinMain) R>>код команда: 48c700b3114000 mov qword ptr [rax], offset адрес некоей функции — секция кода, адрес чуть больше WinMain
Здравствуйте, Сергей Мухин, Вы писали:
СМ>Здравствуйте, roman313, Вы писали:
R>>Да пожалуйста:
R>>64-битная программа, скомпилированная FASM:
R>>код команды: 48c7c000204000 mov rax, offset ячейка памяти R>>код команда: 48c700b3114000 mov qword ptr [rax], offset адрес некоей функции
R>>FASM эту конструкцию нормально прогоняет, и программа работает. R>>Да и в 64-битном режиме все правильно с точки зренияч синтаксиса, R>>думаю, что это баг MASM
СМ>спасибо. я посмотрю внимательней завтра. А вот в каком порядке описаны super proc и Main proc?