From C/C++ to NASM src
From C/C++ to NASM src
我需要开发一些算法,这些算法实际上很容易使用HIG级别的语言(例如C或C ),但是很难直接以NASM制作为单位。
基本上是C和C 编译器必须使用低级别的结构来产生二进制文件,因此是否有一种简单的方法可以从C C 程序中获取NASM代码。
我发现编译更容易(使用-g查看源代码以及汇编)并在二进制中运行objdump
objdump -M intel -d a.out
来自 man gcc
:
-s
正确的汇编阶段之后停止;不要组装。输出是每个非组件的汇编代码文件的形式 指定的输入文件。
默认情况下,源文件的汇编文件名是由 用.s。
替换后缀.c,.i等
gcc -S hello.c
应该使用相应的汇编代码创建文件hello.s
。
也适用于g++
。其他编译器可能具有类似的选项。
例如,对于此程序(hello.c
):
#include <stdio.h>
int main() {
printf("Hello, world! %dn", 6*7);
return 0;
}
输出(hello.s
)包含以下内容:
.file "hello.c"
.section .rodata
.LC0:
.string "Hello, world! %dn"
.text
.globl main
.type main, @function
main:
.LFB0:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
movl $42, %esi
movl $.LC0, %edi
movl $0, %eax
call printf
movl $0, %eax
popq %rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE0:
.size main, .-main
.ident "GCC: (Debian 4.7.2-5) 4.7.2"
.section .note.GNU-stack,"",@progbits
相关文章:
- 错误:断言失败 (src.type() == CV_8UC1) 在阈值中
- 在目录中查找所有.cpp.h文件(include,src等)的传统方法
- 在发送源代码时省略未使用的boost src文件的策略
- 为简单的src,include,libs文件夹项目编写Makefile
- src/caffe/parallel.cpp:70:1:错误:“参数”未命名类型
- NASM 调用外部C++功能
- QT:在".pro" ffly中指定项目目录,如"build"和"src"
- SWscaler 错误的 SRC 图像指针
- Assertion desc failed at src/libswscale/swscale_internal.h:6
- 如何使用PJSIP库在MINGW上安装NASM,以构建Windows应用程序的OpenH264库
- src/walletdb.h:96:1:错误:"{"标记之前的预期类名
- 双指针 **src 和操作 (*(*src)++ = reg_offset)
- 没有规则来制作目标'src/main/jni/Build.config'。停
- main: src/unix/core.c:117: uv_close: 断言 '!uv__is_closing(handle)' 失败
- 将程序集 NASM 代码链接到 GCC
- 我应该包括外部库的src代码还是从外部库构建的静态库
- 如何创建可供src/code和lib/libraries访问的全局对象
- 警告:打开错误文件(/build/opencv/modules/videoio/src/cap_ffmpeg_impl.
- From C/C++ to NASM src
- 将Gsoap Src文件编译到我的项目中