谁将数字转换为2的补码形式并存储在内存位置?

Gou*_*ham 0 c compiler-construction assembly

编译下面显示的代码行(X86)时,会生成相应的汇编指令.895是-ve数,并以%esp表示的存储位置以2的补码形式存储.

 int a = -895  --> compiler ---> movl    $-895, 24(%esp)
Run Code Online (Sandbox Code Playgroud)

我的疑问是,汇编程序是否直接将-895转换为2的补码形式并生成机器指令或执行CPU的ALU,同时执行相应的机器指令-895作为参数并存储在内存位置?

Mic*_*ker 6

当然它发生在编译(汇编)时,否则movl就不得不生成movl.