c++ - Halide:X86 汇编代码生成
问题描述
我是新来的卤化物。我正在尝试从源代码(https://github.com/halide/Halide/tree/master/apps/camera_pipe)编译 camera_pipe 应用程序。我已经成功编译camera_pipe.cpp。它生成“curved.s”汇编代码。
# Lfunc_begin0:
.loc 3 12 0
#/data/nfs_home/akafi/Halide_CoreIR/src/runtime/posix_allocator.cpp:12:0
.cfi_startproc
#BB#0:
pushq %rbp
.Ltmp0:
.cfi_def_cfa_offset 16
.Ltmp1:
.cfi_offset %rbp, -16
movq %rsp, %rbp
.Ltmp2:
.cfi_def_cfa_register %rbp
#DEBUG_VALUE: default_malloc:user_context <- %RDI
#DEBUG_VALUE: default_malloc:x <- %RSI
.Ltmp3:
#DEBUG_VALUE: default_malloc:alignment <- 128
.loc 3 15 27 prologue_end
#/data/nfs_home/akafi/Halide_CoreIR/src/runtime/posix_allocator.cpp:15:27
subq $-128, %rsi
.Ltmp4:
.loc 3 15 18 is_stmt 0
# /data/nfs_home/akafi/Halide_CoreIR/src/runtime/posix_allocator.cpp:15:18
movq %rsi, %rdi
.Ltmp5:
callq malloc@PLT
movq %rax, %rcx
.Ltmp6:
#DEBUG_VALUE: default_malloc:orig <- %RCX
xorl %eax, %eax
.loc 3 16 14 is_stmt 1
# /data/nfs_home/akafi/Halide_CoreIR/src/runtime/posix_allocator.cpp:16:14
.Ltmp7:
testq %rcx, %rcx
je .LBB0_2
.Ltmp8:
# BB#1:
#DEBUG_VALUE: default_malloc:orig <- %RCX
.loc 3 21 68
# data/nfs_home/akafi/Halide_CoreIR/src/runtime/posix_allocator.cpp:21:68
movq %rcx, %rax
addq $135, %rax
......
......
我试图调试源代码。我发现他将“camera_pipe.cpp”称为“/Halide_CoreIR/src/CodeGen_X86.cpp”。
生成的程序集看起来不像 X86 程序集。那么“CodeGen_X86.cpp”的作用是什么?
解决方案
听起来你可能正在使用一棵非常古老的卤化物树进行构建——很长一段时间没有任何文件camera_pipe.cpp
,生成的输出没有被调用curved.*
,等等。
也就是说,x86 后端CodeGen_X86.cpp
确实会生成 x86 代码。您发布的curved.s
是 x86_64 程序集。
推荐阅读
- matlab - Matlab - 使用归一化去除图像背景
- java - java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/JsonMappingException
- javascript - 如何设置字段名称以上传文件单/数组 Multer NodeJs
- azure-active-directory - Azure AD B2C 用户令牌
- java - typeMismatch.target spring boot 批量拒绝值 [2020-09-18T00:00:00+02:00]
- angularjs - 使用嵌入式引擎将 camunda webapps 添加到 (micronaut) 项目
- c# - 将接口实现对象从一个命名空间转换为另一个,因为两者具有相同的接口但不同的命名空间
- database - 有没有办法理解 PostgreSQL 使用哪些算法来实现关系运算符而无需阅读源代码?
- audit - 审核错误:找不到拱精灵映射
- sql - 有人可以解释一下为什么我的查询不起作用吗?