小编Jim*_*m C的帖子

Could someone please explain what this inline #define assembly is doing?

I'm an occasional C programmer. I've come across this bit of inline assembly code in a Turbo C program

#define ADC(dst,src)    { asm MOV AX, dst;  asm ADD AX, src;  \
              asm ADC AX, 0;    asm MOV dst, AX; }
Run Code Online (Sandbox Code Playgroud)

dst and src are both unsigned 16-bit integers.

It won't compile in GNU C++. Could someone please explain what it's doing? TIA!

x86 assembly gcc turbo-c carryflag

12
推荐指数
2
解决办法
648
查看次数

将可变数量的参数传递给C函数

我正在探索在C中使用变量参数,使用GNU(在Code :: Blocks中).当我执行以下代码时:

#include <stdio.h>
#include <stdarg.h>

void VarargsTest(int n_args, ...)
{
    int i, arg;
    va_list ap;

    fprintf(stderr, "N_args is %d\n", n_args);
    va_start(ap, n_args);
    for(i= 0; i < n_args; i++)
        {
        arg= va_arg(ap, int);
        fprintf(stderr, "arg %d is %d\n", i, arg);
        }
    va_end(ap);
}

int main()
{
    VarargsTest(1,2,3,4,5,6,5,4,3,2,1);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我得到以下结果:

N_args is 1
arg 0 is 2
Run Code Online (Sandbox Code Playgroud)

即,没有正确地向VarargsTest函数报告参数(11)的数量,甚至它所看到的唯一参数也是不正确的.有任何想法吗?

c variables arguments

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

标签 统计

arguments ×1

assembly ×1

c ×1

carryflag ×1

gcc ×1

turbo-c ×1

variables ×1

x86 ×1