преобразование сборки - PullRequest
1 голос
/ 23 мая 2010

Может кто-нибудь объяснить, возможно ли преобразовать этот фрагмент кода в сборку pdp11?

movq    %rdi, -8(%rbp)
    movl    %esi, -12(%rbp)
    movl    %edx, -16(%rbp)
    movl    -16(%rbp), %eax
    cltq
    leaq    0(,%rax,4), %rdi
    movq    -8(%rbp), %r8
    movl    -12(%rbp), %eax
    cltq
    leaq    0(,%rax,4), %rcx
    movq    -8(%rbp), %rsi
    movl    -16(%rbp), %eax
    cltq
    leaq    0(,%rax,4), %rdx
    movq    -8(%rbp), %rax
    movl    (%rdx,%rax), %eax
    addl    (%rcx,%rsi), %eax
    movl    %eax, (%rdi,%r8)
    movl    -12(%rbp), %eax
    cltq
    leaq    0(,%rax,4), %rdi
    movq    -8(%rbp), %r8
    movl    -16(%rbp), %eax
    cltq
    leaq    0(,%rax,4), %rcx
    movq    -8(%rbp), %rsi
    movl    -12(%rbp), %eax
    cltq
    leaq    0(,%rax,4), %rdx
    movq    -8(%rbp), %rax
    movl    (%rdx,%rax), %edx
    movl    (%rcx,%rsi), %eax
    subl    %edx, %eax
    movl    %eax, (%rdi,%r8)
    movl    -16(%rbp), %eax
    cltq
    leaq    0(,%rax,4), %rdi
    movq    -8(%rbp), %r8
    movl    -16(%rbp), %eax
    cltq
    leaq    0(,%rax,4), %rcx
    movq    -8(%rbp), %rsi
    movl    -12(%rbp), %eax
    cltq
    leaq    0(,%rax,4), %rdx
    movq    -8(%rbp), %rax
    movl    (%rdx,%rax), %edx
    movl    (%rcx,%rsi), %eax
    subl    %edx, %eax
    movl    %eax, (%rdi,%r8)
    leave
    ret

это лишь малая часть всего моего кода ... также у меня есть код C той же программы, я обнаружил, что используя флаг gcc -S, я могу получить код сборки, но могу ли я преобразовать его в код pdp11?

Ответы [ 2 ]

4 голосов
/ 23 мая 2010

Если я вас правильно понял, вы просто хотите запустить программу на Си. Если это так, вы можете увидеть здесь, что PDP-11 поддерживается GCC 4.3.

http://en.wikipedia.org/wiki/GNU_Compiler_Collection#Architectures

Получите исходные коды GCC 4.3, узнайте, как создать кросс-компилятор, и ваша проблема решена.

Нет необходимости переводить сборку amd64 в PDP-11

1 голос
/ 23 мая 2010

Учитывая, что PDP-11 является 16-битным процессором, вам будет гораздо лучше запустить ваш C через компилятор, который будет генерировать 16-битный код вместо 64-битного кода, который вы опубликовали. Вероятно, легче перевести из исходного кода C в сборку (вручную), чем из 64-разрядной сборки Intel в сборку PDP-11 вручную.

Возможно, вы захотите взглянуть на страницу первоклассных компиляторов C Дениса Ритчи. Насколько я помню, у него есть ссылка на кого-то, кто получил один или два из этих старых компиляторов для компиляции и запуска на современном C. Он нацелен на PDP-11 (хотя источник, который он принимает, НЕ современный C). Вы также можете посмотреть на работу по настройке PDP-11 с помощью lcc . Я считаю, что есть полная, работающая реализация. Хотя я понятия не имею, проверял ли кто-нибудь это недавно, где-то в архивах pcc , вероятно, все еще должен быть древний генератор кода PDP-11 (который интенсивно использовался когда-то).

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