标签: att

测试点%eax%eax

可能重复:
x86汇编 - 针对eax的'testl'eax?

我对汇编语言编程非常陌生,我目前正在尝试阅读从二进制文件生成的汇编语言.我跑过去了

 test   %eax,%eax
Run Code Online (Sandbox Code Playgroud)

或者test %rdi, %rdi等等.我很困惑这是做什么的.这些价值不%eax, %eax一样吗?什么是测试?我在某处读到它正在进行AND操作.....但由于它们是相同的值,它不会只返回%eax吗?

以下是我发现此用法的一个实例:

   400e6e:       85 c0                   test   %eax,%eax
   400e70:       74 05                   je     400e77 <phase_1+0x23>
Run Code Online (Sandbox Code Playgroud)

je如果被比较的两个值相等,我认为跳跃......好吧,因为 %eax很好,本身,在什么情况下我们不会跳?

我是一般的编程初学者,所以如果有人能向我解释这一点,我会非常感激.谢谢!

x86 assembly att

122
推荐指数
4
解决办法
15万
查看次数

设置adb供应商密钥

编辑:我想,我想出了问题所在.亚行发现我不是最新的更新(在&t发布了一个舞台上的udpate,我不知道)所以亚行没有让我调试.现在一切都很好.

我一直在AT&T HTC One M8上调试我的应用程序大约一个月.突然今天,当我插入手机时,我没有获得授权弹出窗口.经过一个小时的故障排除后,我发现了问题,但没有找到解决方案.

这是我在Android Studio 1.3.1中遇到的错误:

设备未授权.
这个adbd $ADB_VENDOR_KEYS没有设置; 尝试'adb kill-server',如果这似乎是错误的.
否则,请检查设备上的确认对话框.

我用Google搜索$ADB_VENDOR_KEYS但无济于事.

信息:

  • 电话:AT&T HTC One M8运行5.0.1(API 21)
  • Android Studio版本1.3.1 build 141.2135290
  • JDK版本:1.8.0_60

我怎样才能再次获得弹出窗口?我需要调试我的应用程序

android adb att android-studio

40
推荐指数
4
解决办法
10万
查看次数

35
推荐指数
2
解决办法
5万
查看次数

什么是callq指令?

我有一个由工具生成的x86_64架构的gnu汇编程序代码,并且有以下指令:

movq %rsp, %rbp  
leaq str(%rip), %rdi
callq puts
movl $0, %eax
Run Code Online (Sandbox Code Playgroud)

我找不到关于"callq"指令的实际文档.

我查看了http://support.amd.com/TechDocs/24594.pdf,这是"AMD64架构程序员手册第3卷:通用和系统指令",但它们只描述了CALL近距离和远距离指令.

我查看了gnu汇编程序https://sourceware.org/binutils/docs/as/index.html的文档,但找不到详细说明它支持的说明部分.

我理解它是对函数的调用,但我想知道细节.我在哪里可以找到它们?

x86 assembly x86-64 att

28
推荐指数
1
解决办法
2万
查看次数

cltq在装配中做了什么?

0x0000000000400553 <main+59>:   mov    -0x4(%rbp),%eax
0x0000000000400556 <main+62>:   cltq   
0x0000000000400558 <main+64>:   shl    $0x3,%rax
0x000000000040055c <main+68>:   mov    %rax,%rdx
Run Code Online (Sandbox Code Playgroud)

事实上,我的程序很简单:

5   int main(int argc, char *argv[]) { 
6     int i = 0;
7     while(environ[i]) {
8       printf("%s\n", environ[i++]);
9     }
10    return 0;
Run Code Online (Sandbox Code Playgroud)

但是程序集输出很长:

Dump of assembler code for function main:
0x0000000000400518 <main+0>:    push   %rbp
0x0000000000400519 <main+1>:    mov    %rsp,%rbp
0x000000000040051c <main+4>:    sub    $0x20,%rsp
0x0000000000400520 <main+8>:    mov    %edi,-0x14(%rbp)
0x0000000000400523 <main+11>:   mov    %rsi,-0x20(%rbp)
0x0000000000400527 <main+15>:   movl   $0x0,-0x4(%rbp)
0x000000000040052e <main+22>:   jmp    0x400553 <main+59>
0x0000000000400530 <main+24>:   mov    -0x4(%rbp),%eax …
Run Code Online (Sandbox Code Playgroud)

x86 assembly gnu-assembler att

26
推荐指数
4
解决办法
4万
查看次数

在x86汇编中,美元($)和百分比(%)符号代表什么?

我试图理解汇编语言如何适用于微计算机体系结构类,并且我在示例中仍然面对不同的语法:

sub $48, %esp
mov %eax, 32(%esp)
Run Code Online (Sandbox Code Playgroud)

这些代码是什么意思?什么是32操作数和esp寄存器的添加?

x86 assembly att

26
推荐指数
2
解决办法
2万
查看次数

movq汇编函数

我正在阅读一些代码并且不确定这行是做什么的:

movq (%rsp), %rsp
Run Code Online (Sandbox Code Playgroud)

assembly x86-64 att

22
推荐指数
2
解决办法
4万
查看次数

x86-64中movq和movabsq之间的区别

我是这里的新手,刚刚开始学习汇编语言.所以,如果我错了,请纠正我,或者如果这篇文章没有任何意义我会删除.

我在讨论x86-64英特尔架构中的数据移动指令.我已经读过,常规movq指令只能有直接的源操作数,可以表示为32位二进制补码数,而movabsq指令可以有任意64位立即数作为其源操作数,并且只能有一个寄存器作为目标.

你能详细说明一下吗?这是否意味着我只能使用movabsq指令移动64位立即值?只有立即价值到登记册?我不知道如何将64位立即值移动到内存中.或者也许我错了一些重要的事情.

x86 assembly x86-64 instruction-set att

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

关于AT&T x86语法设计的问题

  1. 任何人都可以向我解释为什么AT&T语法中的每个常量前面都有一个"$"?
  2. 为什么所有寄存器都有'%'?
  3. 这只是让我做很多蹩脚打字的另一种尝试吗?
  4. 另外,我是唯一一个发现:16(%esp)真的违反直觉[esp+16]吗?
  5. 我知道它编译成同样的东西,但为什么有人想要输入很多'$'和'%'而不需要? - 为什么GNU选择此语法作为默认语法?
  6. 另一件事,为什么at&t语法中的每条指令前面都有一个:l? - 我知道它的操作数大小,但为什么不让汇编程序弄清楚呢?(我是否想要在不是那么大的操作数上做一个movl?)
  7. 最后一件事:为什么mov参数倒置了?

是不是合乎逻辑:

eax = 5
mov eax, 5
Run Code Online (Sandbox Code Playgroud)

at at&t是:

mov 5, eax
5 = a (? wait what ?)
Run Code Online (Sandbox Code Playgroud)

注意:我不是想乱跑.我只是不明白他们所做的设计选择,我试图了解他们为什么做了他们所做的.

x86 assembly att intel-syntax

18
推荐指数
3
解决办法
1894
查看次数

智能蓝牙:GATT比.ATT - 它们之间有什么区别?

任何人都可以为我定义GATT和ATT之间的区别是什么?我无法理解.
我知道它们都是处理BLE服务的通用协议.但并没有真正理解它.请解释.
谢谢!

bluetooth att bluetooth-lowenergy gatt

15
推荐指数
2
解决办法
9071
查看次数