萌新求助,a+b 用汇编写 CE 了

P1001 A+B Problem

lotus_f @ 2022-02-08 09:52:27

RT,我使用了这个网站生成汇编代码,然后交了一发:CE 记录。

所以这是因为我写挂了还是洛谷不让用?


by esquigybcu @ 2022-02-08 10:06:53

@lotus_f 但是我还是感觉您写挂了,因为在我本地也编译不了


by lotus_f @ 2022-02-08 10:11:13

算了,不玩了 /kk


by esquigybcu @ 2022-02-08 10:20:30

@lotus_f

其实可以过


by rzh123 @ 2022-02-08 10:20:40

洛谷不让用,而且你也写挂了,C++ 内嵌 ASM 不是这么用的。


by esquigybcu @ 2022-02-08 10:32:13

@rzh123 那要怎么用 /kel


by rzh123 @ 2022-02-08 11:12:44

这样:

#include <cstdio>
int a,b,c;
int main(){
    scanf("%d%d",&a,&b);
    __asm(
        "mov a,%eax\n"
        "mov b,%ebx\n"
        "add %eax,%ebx\n"
        "mov %ebx,c"
    );
    printf("%d\n",c);
  return 0;
}

by rzh123 @ 2022-02-08 11:23:28

@lotus_f


by esquigybcu @ 2022-03-02 16:41:04

@lotus_f 过了


by esquigybcu @ 2022-03-02 16:45:31

@rzh123 g++ 的 asm 貌似是 AT&T 语法,您写的是 Intel

但是您写的汇编里的 a, b 是什么鬼???又没有 a, b 这种寄存器

应该是

__asm__(R"(
movl %%eax, %eax
movl %%ebx, %ebx
addl %eax, %ebx
movl %ebx, %%ecx
)" : : "a"(a), "b"(b), "c"(c));

by esquigybcu @ 2022-03-02 16:49:25

godbolt.org 有一个选项(在 Output 下面)叫做 Intel asm syntax,关掉就行


上一页 | 下一页