相关疑难解决方法(0)

132
推荐指数
4
解决办法
10万
查看次数

如何从Linux上的c源代码生成一个nasm可编译的汇编代码?

测试平台是32位Linux.

基本上,我知道gcc可以用来生成Intel和At&T样式的汇编代码,但似乎你不能直接使用nasm/tasm来编译生成的Intel样式汇编代码.

我正在Windows和Linux平台上进行项目分析asm代码,所以我想如果它们都可以由像nasm\yasm这样的平台独立汇编程序编译,我可以有一个更容易的时间......

所以我的问题是如何从Linux上的c源代码生成一个nasm可编译的汇编代码?

assembly gnu-assembler nasm tasm yasm

21
推荐指数
2
解决办法
1万
查看次数

gcc真的知道如何输出NASM Assembly

所以我有一个简单的C程序循环传递给main的args然后返回:

#include <stdio.h>

int main(int argc, char *argv[])
{
    int i;
    for(i = 0; i < argc; ++i) {
        fprintf(stdout, "%s\n", argv[i]);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我想看看gcc如何用NASM格式写出程序集.我正在查看.asm文件中的输出,并注意到语法是TASM.下面是make文件和gcc的输出.我做错了还是gcc没有输出真正的NASM语法?

all: main

main: main.o
        ld -o main main.o

main.o : main.c
        gcc -S -masm=intel -o main.asm main.c
        nasm -f elf -g -F stabs main.asm -l main.lst
Run Code Online (Sandbox Code Playgroud)

    .file   "main.c"
    .intel_syntax noprefix
    .section    .rodata
.LC0:
    .string "%s\n"
    .text
.globl main
    .type   main, @function
main:
    push    ebp
    mov ebp, esp
    and esp, -16
    sub esp, …
Run Code Online (Sandbox Code Playgroud)

gcc nasm tasm

3
推荐指数
1
解决办法
4152
查看次数

标签 统计

assembly ×2

nasm ×2

tasm ×2

abi ×1

gcc ×1

gnu-assembler ×1

linux ×1

unix ×1

x86-64 ×1

yasm ×1