x86

    0热度

    1回答

    我很新装配,现在我试图了解cmp如何工作。下面要说的写在wiki: cmp arg2, arg1 执行ARG1和ARG2之间的比较操作。比较 通过从arg1(有符号)减去arg2来执行,结果 可以被称为Temp。 温度然后被丢弃。 这是什么意思“Temp然后被丢弃”?它存储在哪里?我怎样才能访问这个比较结果?有人可以解释吗?

    2热度

    1回答

    一旦用户输入了正确的密码,我想显示“Hello World”,但是如果密码不正确,程序会提示输入Yes(Y)/ No(N),如果用户输入Yes Y),程序将给用户三次机会显示“Hello World”,如果用户输入了No(N),程序将退出。 我的问题是,每次我选择是(Y),该程序保持循环,其刚刚结束,如果我进入否(N), 这里是我的代码(我已经跳过某些部分) ... org 0100h

    1热度

    1回答

    我已经开始学习NASM汇编器& RE。我已经得到了第一个问题是下一个(简称): 使用objconv实用我不能恢复反编译的程序。 我的简单的应用程序: #include <stdio.h> char* msg = "Hello World!"; int main(void) { printf("%s\r\n", msg); return 0; } 1)。第一步骤中,

    2热度

    1回答

    对于娱乐,我正在学习GNU扩展程序集,使用带有32位Linux目标的x86的AT & T语法。我刚刚花了最后三个小时编码两个可能的解决方案,以交换两个整数变量a和b的值,我的解决方案都不能完全解决我的问题。首先,让我们来看看我的TODO障碍在一些细节: int main() { int a = 2, b = 1; printf("a is %d, b is %d\n", a,

    3热度

    1回答

    这是我的汇编程序add.s .globl add add: movl 4(%esp), %eax movl 8(%esp), %ebx addl %ebx, %eax ret 这是我的C程序。我正试图从C程序中调用汇编程序。 #include <stdio.h> int add(int a, int b); int main() {

    -1热度

    1回答

    我在x64上使用C++多线程。我想更好地理解数据总线。我想知道如果我尝试从2个线程设置变量而没有任何防范(无互斥锁,CV,信号量和无原子)会发生什么。数据总线依赖于什么? 例如,如果我有变量: int32_t i; 如果我设置在不同的线程变量: 线程1: i =0x11223344; 线程2: i =0x44332211; 正如我知道针对x64数据总线是64位。所以变量i可以设置为1条

    0热度

    1回答

    我在学习汇编,它在某种程度上是有意义的,但我有一个问题。我有这个源文件hello.sfml: ; nasm -felf64 hello.asml && ld hello.o global _start section .text _start: ; write(1, message, 13) mov rax, 1 ; syscall 1 is w

    3热度

    1回答

    多少的性能提升,如果有的话,可以从一个最近高端的Intel CPU重新排序的x64(x86-64的)指令得到。在极度危急的情况下值得一提吗? 我也想知道关于通过改变寄存器的使用取得的成果的可能性/使用附加寄存器(如果免费),以允许在某些情况下,奇较长距离的代码移动?

    0热度

    2回答

    Employee STRUCT IdNum BYTE "000000000" ; 9 LastName BYTE 30 DUP(0) ; 30 ALIGN WORD ; 1 byte added Years WORD 30 ; 2 ALIGN DWORD ; 2 byte added SalaryHistory DWORD 0,0,0,

    2热度

    1回答

    我尝试添加几个像素在一起,以便做罗嗦滤波器NASM。我已经设法添加三个像素,其值为00 + d3 + d8(0 + 211 + 216)。当我尝试添加一个像素,值为0时,程序无法打印变量blurr的值。 更新: 似乎增加了可变总和产品可在完成三次,因为如果我注释掉另一个add,该值将在我的输出文件打印。 blurrTopRow: ;from 0 - 251 there will be n