所以我目前正在学习汇编语言(AT&T
语法)。我们都知道gcc
可以选择使用-S
参数从C代码生成汇编代码。现在,我想看看一些代码,它在装配中的外观。问题是,在实验室我们用as+ld
编译它,并且就目前而言,我们不能使用C库。所以例如我们不能使用printf。我们应该通过系统调用来实现(32位就足够了)。现在我在C:
#include <stdio.h>
int main()
{
int a = 5;
int b = 3;
int c = a + b;
printf("%d", c);
return 0;
}
这是一个简单的代码,所以我知道它与syscalls的外观。但是如果我有一些更复杂的代码,我不想乱用并替换每个call printf
并修改其他寄存器,cuz gcc
生成的printf代码,我应该用syscalls。那么我可以以某种方式使gcc
使用系统调用生成汇编代码(例如I / O(控制台,文件)),而不是使用C库吗?
答案 0 :(得分:1)
在Linux下,存在宏族[15:50:23.779] *** Setup started
[15:50:25.435] Setup version: Inno Setup version 5.5.8 (a)
[15:50:25.437] Original Setup EXE: C:\dev\innosandbox\Output\setup.exe
[15:50:25.439] Setup command line: /SL5="$82622,56832,56832,C:\dev\innosandbox\Output\setup.exe" /SPAWNWND=$92602 /NOTIFYWND=$1A2580 /DEBUGWND=$5310D8
[15:50:25.440] Windows version: 10.0.14393 (NT platform: Yes)
[15:50:25.441] 64-bit Windows: Yes
[15:50:25.443] Processor architecture: x64
[15:50:25.445] User privileges: Administrative
[15:50:25.446] 64-bit install mode: No
[15:50:25.450] Created temporary directory: C:\Users\Keith\AppData\Local\Temp\is-E13L9.tmp
[15:50:35.234] Hello from COM dll
来生成系统调用,其中X命名参数的数量。它被标记为过时,但恕我直言仍在工作。例如,以下代码应该有效(此处未测试):
Dim objXL
Set objXL = WScript.CreateObject("InnoCom.Inno")