Работа по изучению ассемблера и у меня есть следующий код, я должен перевести на C:ATT Ассамблея C
pushl %ebp
movl %esp, %ebp
movl 12(%ebp), %eax
imull $886836204, %eax, %edx
movl 8(%ebp), %eax
addl %edx, %eax
addl $629084528, %eax
popl %ebp
ret
Я знаю, что он принимает два аргумента и в формате int func(int1, int2) {}
и он возвращает что-то из сложения и умножения. Помимо этого я потерян. Как это выглядит в C?
@isedev действительно. это именно то, о чем я думаю. – HuStmpHrrr
Есть два способа сделать это. Первый способ заключается в том, чтобы эмулировать то, что делают инструкции по сборке (подсказка: вам понадобится реализация стека и некоторые переменные реестра). Второй способ - выяснить, что делает язык ассемблера, и написать код C, который выполняет одно и то же. Лично я голосую за последний подход. –
, затем дополнительный намек: 'gcc -S' компилирует код C для сборки, поэтому вы можете проверить свои теории. – isedev