分类 编程.汇编 中的文章

汇编 | C/C++调用汇编

概述

我使用AT&T的规范,在linux上完成 C和汇编的互相调用,并使用gcc编译成可执行文件。
目标:汇编函数提供输出。类似C语言的函数

void hello_world(char* value)
{
    printf(value);
}

提供给C语言调用:

int main()
{
    hello_world("hello world!\n");
}

搭建AT&T的环境

  • ubuntu16.04 或 ubuntu18.04- vscode- 文件后缀: .s- gcc 下载vscode插件GNU Assembler Language Support

C代码生成为汇编代码

提供一个hello.c

……

阅读全文

汇编 | AT&T和Intel规范的区别

概述

常见的指令集以及汇编语言规范: x86(IA-32)、x86-64指令集(常见于PC端),对应有2家公司发布的不同汇编语言规范:

  • intel公司发布的汇编语言规范,称intel 汇编:Windows派系(Microsoft),比较著名的汇编器有微软的masm和开源的nasm。
  • AT&T公司发布的汇编语言规范,称AT&T 汇编:Unix派系(或者说GNU),比如g++编译器等。

AT&T格式 和 Intel格式的区别

表格如下:

……

阅读全文