Xcode与NASM编码
如何在Xcode中用汇编语言编写和构建程序Xcode与NASM编码,xcode,nasm,Xcode,Nasm,如何在Xcode中用汇编语言编写和构建程序 我寻找它,但没有成功。你能帮助我吗?如果无法在xcode中编写NASM代码,请推荐一些好的IDE。这可能是您提出此问题后的一个变化,但目前,安装(在安装xcode之后)将安装NASM(Netwide Assembler)和GASM(GNU Assembler)。要在汇编中开始编码,您有两个选项,具体取决于您正在执行的操作:即,在Xcode中构建,或直接使用NASM或GASM在终端中构建 代码9.4.1 如果您想使用IDE,您可以通过单击“文件>新文件”
我寻找它,但没有成功。你能帮助我吗?如果无法在xcode中编写NASM代码,请推荐一些好的IDE。这可能是您提出此问题后的一个变化,但目前,安装(在安装xcode之后)将安装
NASM
(Netwide Assembler)和GASM
(GNU Assembler)。要在汇编中开始编码,您有两个选项,具体取决于您正在执行的操作:即,在Xcode中构建,或直接使用NASM
或GASM
在终端中构建
代码9.4.1
如果您想使用IDE,您可以通过单击“文件>新文件”,然后搜索“程序集”,将程序集文件添加到Xcode中,您将看到一个程序集文件类型。或者,您可以添加一个空白文件,然后从文件检查器的“类型”下拉列表中手动选择文件类型。除非您的应用程序需要Cocoa框架,否则您应该在项目/目标创建期间创建命令行应用程序,而不是Cocoa应用程序。作为命令行程序的示例:
hello.asm(来自参考资料中列出的教程网站):
main.swift:
如果希望在汇编操作中使用C而不是Swift,则需要创建头文件而不是使用@\u silgen\u name
:
#ifndef Bridging_Header_h
#define Bridging_Header_h
const char *start(void);
#endif /* Bridging-Header_h */
程序集生成规则
您还必须为目标提供“构建规则”,这一点很重要。为此:
/usr/local/bin/nasm-f macho64${INPUT_FILE_PATH}-o${SCRIPT_OUTPUT_FILE_0}
这是一个终端命令——要了解更多信息,请在终端中键入mannasm
$(派生文件\u目录)/${INPUT\u FILE\u BASE}.o
vim
、nano
、和emacs
内置在终端中,而TextEdit内置在macOS中)来创建程序集文件。然后使用nasm
或gasm
命令组合文件。键入man-nasm
或man-gasm
,查看您可用的各种选项
参考文献:汇编代码示例-
从Swift或C引用程序集(需要桥接标头)-
构建规则-我的2美分用于Xcode 11和内联(主要用于didact使用…) 无需使用外部工具:
int main(int argc, const char * argv[]) {
long long test = 0;
asm
{
mov rax, test
inc rax
inc rax
inc rax
mov test, rax
}
printf("Hello, World! %lld\n", test);
return 0;
}Xcode的内置汇编程序是GNU
gas
,它特别不适合人类使用。很多人还是使用它,但是如果你想要另一个汇编程序,你必须在标准工具链之外安装它。我认为OSX没有任何非GNUIDE。
#ifndef Bridging_Header_h
#define Bridging_Header_h
const char *start(void);
#endif /* Bridging-Header_h */
int main(int argc, const char * argv[]) {
long long test = 0;
asm
{
mov rax, test
inc rax
inc rax
inc rax
mov test, rax
}
printf("Hello, World! %lld\n", test);
return 0;