GMP-код сборки? - PullRequest
       15

GMP-код сборки?

1 голос
/ 31 января 2010

Где я могу найти МОНТАЖНЫЙ код для моей программы, написанной для gmp-5.0.0 Я использую UBUNTU и G ++ компилятор. команда для компиляции кода: "g ++ test.cc -o outp -lgmp"

на самом деле я хочу знать, что происходит внутри с точки зрения 1 и 0 ... как будет происходить распределение памяти и как будут выполняться операции с битами RAW !!

Ответы [ 4 ]

1 голос
/ 31 января 2010

со страницы руководства gcc(1):

   -save-temps
       Store the usual "temporary" intermediate files permanently; place
       them in the current directory and name them based on the source
       file.  Thus, compiling foo.c with -c -save-temps would produce
       files foo.i and foo.s, as well as foo.o.  This creates a
       preprocessed foo.i output file even though the compiler now
       normally uses an integrated preprocessor.
1 голос
/ 31 января 2010

Вы можете получить сгенерированный язык ассемблера, используя флаг -S. Имейте в виду, что в основном это будет сборка, сгенерированная для вашего кода, а не сгенерированный код для таких вещей, как библиотечные функции, которые вы используете. «В основном» заключается в том, что он может включать / будет включать код, сгенерированный для встроенных функций в заголовках, которые вы включили.

0 голосов
/ 31 января 2010

Код написан на C, поэтому вы должны взглянуть на исходный код, это будет первый шаг для понимания кода сборки (обычно этого достаточно, чтобы понять, что происходит с «необработанными битами»). В любом случае есть встроенная сборка

Тогда, возможно, что вы могли бы сделать, это запустить свой код внутри gdb и использовать команду disassemble, чтобы увидеть код ассемблера очень небольшого количества специфического кода и попытаться понять его.

0 голосов
/ 31 января 2010

Вы можете использовать objdump 1 для разборки вашего libgmp. Это не будет интересно.

(А дизассемблирование вашего кода в основном включает вызов функции libgmp, которая не покажет «что происходит внутри», если вы также не разберете libgmp.)

Возможно, вы хотите прочитать исходный код 2 вместо?

...