我很困惑在何处使用cmov
说明以及jump
在汇编中使用说明的位置?
从性能的角度来看:
如果可能,请通过示例解释他们的不同之处.
我知道可执行文件包含指令,但这些指令究竟是什么?如果我想调用MessageBox
API函数,例如,指令是什么样的?
谢谢.
IDM表示,如果EBP用作基址寄存器,则内存操作使用SS段.其结果是,[ebp + esi]
和[esi + ebp]
引用SS和DS的段,分别.参见NASM的文档:3.3有效地址.
另外,在上述相同的部分,NASM提到如何通过替换以产生更短的机器代码[eax*2]
与[eax+eax]
.
然而,NASM还生成[ebp + ebp]
用于[ebp*2]
(即没有碱寄存器).
我怀疑[ebp+ebp]
引用SS段,并[ebp*2]
引用DS段.
我问NASM这个问题.他们思考[ebp*2]
并且[ebp+ebp]
是一样的,但对我来说没有意义.显然,[ebp+ebp]
(ebp作为基址寄存器)引用SS段.如果它们相同,也[ebp*2
必须参考SS.这意味着SS只要ebp
是基数或索引寄存器就被引用,这又意味着SS [ebp + esi]
和[esi + ebp]
引用SS段,因此它们必须相同.
有谁知道哪个部分[ebp*2]
使用?
我想在指令级别对我的C代码进行统计分析.我需要知道我正在执行多少次加法,乘法,除法等.
这不是您通常的磨码分析要求.我是算法开发人员,我想估算将代码转换为硬件实现的成本.为此,我被问到运行时的指令调用故障(解析编译的程序集是不够的,因为它不考虑代码中的循环).
环顾四周后,似乎VMware可能提供了一个可能的解决方案,但我仍然找不到能够跟踪我的进程的指令调用流的特定功能.
你知道任何能够实现这一目标的分析工具吗?
许多处理器具有统一格式和宽度的指令,例如ARM,其中所有指令都是32位长.其他处理器具有多个宽度的指令,例如长度为2,3或4个字节,例如8086.
encoding cpu-architecture variable-length instructions fixed-width
我正在使用x86汇编语言编程类,并且知道不应该再使用某些指令 - 因为它们在现代处理器上很慢; 例如,循环指令.
我无法找到任何被认为已弃用的指令列表,应该避免使用; 任何指导将不胜感激.
在看到新的foursquare应用程序的最后截图和他们的气球之类的卡通说明后,我想在我的应用程序中创建其中的一些.
我发现iPhone 小弹出类似问题 的说明......怎么样?
这是foursquare app的另一个截图:
我想知道如何通过Android实现这一目标.
在此先感谢您的帮助.
更新:这是我到目前为止所能得到的,但添加了一些带有自定义绘制背景的按钮,并使用FrameLayout对它们进行分层:
但我仍然无法获得三角效应.也许我的自定义背景形状可以做些什么?
UPDATE2
在检查了你的建议之后,我决定采用Aaron C的想法并添加一个带箭头的图像.这是我目前的结果:
谢谢Snailer,QuickAction API项目似乎非常有希望.在我的应用程序中实现更多功能时,我会检查出来.
现在,我只需要获得正确的颜色,或者我可以这样做.看起来也不错.
因此,总结一下我的所作所为:
当我使用frameview时,我放在这里的所有东西都将堆叠在一起.这就是我可以在布局中添加内容的方法.
在那个framelayout中,我放了2个相对布局,带有三角形的图像和一个按钮来创建两个上部弹出窗口.在底部我只放了一个按钮.
而已.我希望它对某人有所帮助.
再次感谢您的帮助!
我意识到这个问题绝对不可能回答,但我只是在大概数字之后:
给定一个合理大小的C程序(数千行代码),平均来说,将生成多少ASM指令.换句话说,什么是真实的C-to-ASM指令比率?随意做出假设,例如"使用当前的x86架构".
我试图谷歌这个,但我找不到任何东西.
附录:注意到这个问题引起了多大的混淆,我觉得需要一个解释:我想通过这个答案知道,实际上是要知道"3GHz"的含义.我完全清楚每个Herz的吞吐量差别很大,具体取决于架构,硬件,缓存,总线速度和月球位置.
我不是在一个精确而科学的答案之后,而是一个可以用到最终尺度的经验答案.
这不是一个简单的答案(正如我注意到的那样),这是我最大的努力.我知道每行C的ASM行数量取决于你在做什么.i++
与sqrt(23.1)
我不在同一个社区- 我知道这一点.此外,无论我从C中获得什么ASM,ASM都被解释为处理器内的各种微码集,这再次取决于您是运行AMD,英特尔还是其他东西,以及它们各自的代.我也知道这一点.
到目前为止,我所得到的球场答案是我所追求的:一个足够大的项目平均每1行ANSI-C大约2行x86 ASM.今天的处理器可能会在每个时钟周期平均大约一个ASM命令,一旦管道被填满,并给出足够大的样本.
你知道吗
好吧,我想创建像这个屏幕的东西.当我第一次打开应用程序时,我想打开这个屏幕并显示一个上下文..怎么可能?我不知道是什么搜索这种类型的东西..
如何在AMD和Intel系统上运行可执行文件.AMD和英特尔的指令集不同吗?可执行文件如何在两者上工作?他们究竟是如何编译文件的呢?操作系统在这一切中的作用究竟是什么?
executable instruction-set platform-independent instructions
instructions ×10
assembly ×5
android ×2
c ×2
executable ×2
x86 ×2
binary ×1
deprecated ×1
encoding ×1
fixed-width ×1
foursquare ×1
intel ×1
layout ×1
mov ×1
nasm ×1
opcode ×1
performance ×1
popup ×1
profiling ×1