聊聊 C 语言和 ABAP 这两门编程语言的关系(一)

简介: TIOBE 2022年3月的编程语言排行榜显示:https://www.tiobe.com/tiobe-index/C 语言和 C++ 分别名列第二和第四位:

TIOBE 2022年3月的编程语言排行榜显示:

https://www.tiobe.com/tiobe-index/

C 语言和 C++ 分别名列第二和第四位:

20.png

而 ABAP 编程语言名列第 42 位:

21.png

为什么这篇文章要把 C 语言和 ABAP 放在一起讲,而不是别的编程语言比如 Java 和ABAP 呢?因为 ABAP 语言底层是基于 C/C++ 实现的,包括其关键字(比如最简单的关键字 WRITE 的 C++ 实现有 2 千多行)和虚拟机(ABAP Runtime).


SAP 内部的一群计算机科学家们发明了 ABAP 这门在企业管理软件影响极其深远的编程语言,由它实现的各种 SAP 应用帮助了全球超过 180 个国家和地区的客户们更好地运行其业务。


通过 Google 我们能搜索到一些关于这些 SAP 计算机科学家们的介绍,比如这个链接

image.png

比如像下图这种用 kernel module 修饰的 sc_km_check_feature_2, 以及每一个 ABAP 关键字,其 C 语言的实现代码在 SAP 内部的 Netweaver 系统可以查看到,但是在客户系统上,则是以二进制目标文件的形式存储,无法查看源代码。

image.png

本文的目的是希望通过 C 语言和 ABAP 编译过程的一些介绍,加深 ABAP 开发人员们对这门语言的理解。

用 C 语言写个 Hello World 程序,另存为 study.c:

image.png

用命令行 gcc ./study.c --verbose 进行编译,参数 verbose 可供我们查看编译明细。上述命令行在我的 Ubuntu 系统上产生一串长长的输出:

image.png

image.png


我们可以一步步分析。首先用参数 -E 查看预处理生成的目标文件 study.i:

gcc -E study.c -o study.i

可以看到源代码文件只有 78 字节,编译预处理后生成的输出文件有 17116 字节。

image.png

为什么膨胀了这么多?原因是因为我源代码文件的第一行,#include 被预处理器替换成了 stdio.h 的实际内容,而 stdio.h 里如果又存在 #include 其他文件的声明,这个替换过程会递归执行。因此直到 study.i 的末尾部分,我们才能看到在 study.c 里书写的源代码部分。

image.png

源代码文件 study.c 里的第一行语句 #include, 请大家记住,后面讲 ABAP还会提到。

用命令行 gcc -S 可以查看 study.c 编译后生成的汇编代码:

23.png

目录
相关文章
|
1月前
|
算法 程序员 编译器
C++与C语言的差异:编程语言之间的奥秘探索
C++与C语言的差异:编程语言之间的奥秘探索
50 0
|
2月前
|
程序员
什么是 ABAP 编程语言里的 Exception 断点
什么是 ABAP 编程语言里的 Exception 断点
18 0
|
7月前
|
存储 SQL 网络协议
ABAP 编程语言中 Class(类)的设计原理剖析
ABAP 编程语言中 Class(类)的设计原理剖析
89 2
|
7月前
|
Shell Linux 应用服务中间件
ABAP 面试题:如何使用 ABAP 编程语言的 System CALL 接口,直接执行 ABAP 服务器所在操作系统的 shell 命令?
ABAP 面试题:如何使用 ABAP 编程语言的 System CALL 接口,直接执行 ABAP 服务器所在操作系统的 shell 命令?
113 0
|
7月前
|
Shell Linux 应用服务中间件
使用 ABAP 编程语言的 System CALL 接口,直接执行 ABAP 服务器所在操作系统的 shell 命令
使用 ABAP 编程语言的 System CALL 接口,直接执行 ABAP 服务器所在操作系统的 shell 命令
68 0
|
6月前
|
Java 编译器 BI
关于 ABAP 这门编程语言的编译器和解释器
关于 ABAP 这门编程语言的编译器和解释器
29 0
|
7月前
|
存储
什么是 ABAP 编程语言的 Used Memory 和 Allocated Memory
什么是 ABAP 编程语言的 Used Memory 和 Allocated Memory
54 0
|
7月前
ABAP 编程语言里的 Reference Semantic - 引用语义
ABAP 编程语言里的 Reference Semantic - 引用语义
41 0
|
7月前
使用 SAP ABAP 编程语言调用 Windows10 操作系统的 Powershell 命名并打印出执行结果
使用 SAP ABAP 编程语言调用 Windows10 操作系统的 Powershell 命名并打印出执行结果
43 0
|
7月前
|
存储 Java BI
聊聊 C 语言和 ABAP 这两门编程语言的关系
聊聊 C 语言和 ABAP 这两门编程语言的关系
57 0