Убрать x86_64 вывод блока с gcc? [дубликат]

Следующее является некоторым текстом от онлайн-курса, который я беру:

класс BufferedStream является реальным классом, который расширяет Потоковый класс и используется для обеспечения дополнительного буфера памяти другому типу потока, и синхронно и асинхронно. Класс BufferedStream должен быть настроен для или чтения или записать, когда экземпляр класса создается, но BufferedStream не может быть настроен для выполнения обоих задачи одновременно.

Microsoft улучшила производительность всех потоков в Платформе.NET включением встроенного буфера. Производительность, заметно улучшенная путем применения BufferedStream к существующим потокам, таким как FileStream или MemoryStream. Применение BufferedStream к существующему потоку Платформы.NET приводит к двойному буферу.

наиболее распространенное приложение класса BufferedStream находится в пользовательских потоковых классах, которые не включают встроенный буфер.

14
задан John 26 September 2009 в 16:00
поделиться

3 ответа

В раздел .eh_frame входят дескрипторы раскрутки, которые вам нужны только для раскрутки стека (например, с помощью GDB). Изучая сборку, вы можете просто игнорировать ее. Вот способ «очистки», который вы хотите:

gcc -S -o - test.c | sed -e '/^\.L/d' -e '/\.eh_frame/Q'
        .file   "test.c"
        .text
.globl main
        .type   main,@function
main:
        pushq   %rbp
        movq    %rsp, %rbp
        movl    $0, %eax
        leave
        ret
        .size   main,.Lfe1-main
5
ответ дан 1 December 2019 в 14:33
поделиться

Вы можете попробовать поместить код, который хотите изучить, в функцию.

Например:

int ftest(void)
{
    return 0;
}

int main(void)
{
    return ftest();
}

Если вы посмотрите на исходный код сборки для тестирования, он будет настолько чистым, насколько вам нужно .

..snip..
test:
.LFB2:
        pushq   %rbp
.LCFI0:
        movq    %rsp, %rbp
.LCFI1:
        movl    $0, %eax
        leave
        ret
..snip..
5
ответ дан 1 December 2019 в 14:33
поделиться

Я обнаружил, что использование флага -Os проясняет ситуацию. Я пробовал использовать ваш крошечный пример, но это мало что изменило.

Тем не менее, я помню, что это было полезно, когда я изучал ассемблер (на Sparc).

3
ответ дан 1 December 2019 в 14:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: