Используйте -S
опция к gcc (или g ++).
gcc -S helloworld.c
Это выполнит препроцессор (cpp) по helloworld.c, выполнит начальную компиляцию и затем остановится, прежде чем ассемблер выполняется.
По умолчанию это произведет файл helloworld.s
. Выходной файл может быть все еще быть установленным при помощи -o
опция.
gcc -S -o my_asm_output.s helloworld.c
, Конечно, это только работает, если у Вас есть первоисточник. Альтернатива, если у Вас только есть результирующий объектный файл, должна использовать objdump
путем установки --disassemble
опция (или -d
для сокращенной формы).
objdump -S --disassemble helloworld > helloworld.dump
Эта опция работает лучше всего, если параметр отладки включен для объектного файла (-g
во время компиляции), и файл не был разделен.
Выполнение file helloworld
даст Вам некоторый признак относительно уровня детализации, который Вы получите при помощи objdump.
Кое-что из того, что вы ищете, находится в пакете ComputationalGeometry
Package . В частности, ConvexHull
даст вам внешние точки, перечисленные в направлении против часовой стрелки. В этот момент вы можете использовать Line
, чтобы соединить их вместе. Внутренние пути немного сложнее, и я не думаю, что есть точное совпадение. Но ближе всего подходит Триангуляция Делоне
. По сути, он разбивает ваш список точек на наборы треугольников. Однако я не знаю встроенной функции, которая бы разбивала его на прямоугольники.
Я подозреваю, что ответ - нет, такой команды нет. Было бы интересно написать что-нибудь для этого, т. Е. По заданному списку точек вывести соответствующие строки. Я предполагаю, что это просто вопрос:
Для каждой уникальной координаты x получить список y-координат для точек с этой x-координатой и провести линию от минимальной до максимальной y-координаты. Затем повторите для координат Y.
Если вы это сделаете, было бы интересно опубликовать это здесь в качестве продолжения. Или, если вы хотите задать этот вопрос, я уверен, что вы получите несколько хороших решений.
Я голосую за предложение dreeves . Он не использует «встроенную» функцию, но является однострочным, использующим функциональное программирование и спецификации уровней. Реализация следующая:
gridify[pts : {{_?NumericQ, _?NumericQ} ...}] :=
Map[Line, GatherBy[pts, #]& /@ {First, Last}, {2}]