小编Dom*_*ung的帖子

汇编:增加2(或更大数字)而不破坏ADC循环中的CF?

我试图在Windows中测试TDM-GCC 64位汇编中的附加功能.我在前一段时间搜索了资源,我遇到了类似的代码(我做了一些修改,在TDM-GCC中编译它).

typedef struct
{
    int size;
    __uint64_t uints[130];
} BigInteger;

void add(BigInteger *X, BigInteger *Y);   // X += Y
    // %rcx holds address of X, and %rdx holds address of Y apparently.

    // calc.s - assembly file
    .globl add
add:
    movq    8(%rdx), %rax
    addq    %rax, 8(%rcx)
    movq    16(%rdx), %rax
    adcq    %rax, 16(%rcx)
    movq    24(%rdx), %rax
    adcq    %rax, 24(%rcx)
    ...     ...
Run Code Online (Sandbox Code Playgroud)

第一个汇编代码有效.不利的是,只要计算最大尺寸就需要很小的数字.所以我改为检查X和Y的大小并设置一个大小条件的循环,这样如果X和Y不大,它就不会总是添加整个数组.

    ...
// %r13 holds X addr, %r14 holds Y addr.
    addq    $8, %r13   // I have tried  incq …
Run Code Online (Sandbox Code Playgroud)

assembly x86-64 bigint extended-precision tdm-gcc

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

标签 统计

assembly ×1

bigint ×1

extended-precision ×1

tdm-gcc ×1

x86-64 ×1