所以我从来没有做任何汇编编程(虽然我做了一些阅读/推理结果来自x86的小部分和CS类中的arm组装).
我有点好奇人们如何在c /其他(几乎没有)高级语言被认为过于缓慢的时代进行严肃的汇编编程.
人们使用高级汇编程序吗?
某种文本宏?每行评论?
人们是否根据团队约定的惯例进行调用堆栈?他们倾向于使用文本编辑器还是某种ide?
和任何其他有趣的东西.
PS另外你如何处理字符串(可能只是ascii),结构/联合(compositee数据类型)(即如何简化编写代码来创建和操作它们)?
PPS人们经常从汇编中调用OS提供的c库函数吗?
由于IEnumerable.Contains()方法不接受谓词作为参数,大多数人使用以下代码来检查是否存在与条件匹配的东西:
// ProductId is unique.
if (Products.Count(c => c.ProductId = 1234) == 1)
{
// Products list contains product 1234.
}
Run Code Online (Sandbox Code Playgroud)
此代码强制遍历每个产品并检查它是否匹配.实际上没有必要这样做.
在查看Linq-to-SQL生成的SQL代码时,存在同样的问题.select count(*) ... where ProductId = @p0发送一个语句,而不是if exists.
如何通过Linq查找集合是否包含与条件匹配的项目,而不必遍历集合中的每个元素并计算匹配数量?
在C中使用未定义的结构有什么好处吗?
SQLite源代码中的示例:
/* struct sqlite3_stmt is never defined */
typedef struct sqlite3_stmt sqlite3_stmt;
Run Code Online (Sandbox Code Playgroud)
对象被操纵如下:
typedef struct Vdbe Vdbe;
struct Vdbe {
/* lots of members */
};
int sqlite3_step(sqlite3_stmt *pStmt) {
Vdbe *v = (Vdbe*) pStmt;
/* do stuff with v... */
}
Run Code Online (Sandbox Code Playgroud)
那么,为什么不直接使用通常的抽象类型,在私下定义的实际结构foo.c源和公众typedef的foo.h头?
有没有办法向附加的依赖项属性添加约束,以便它只能应用于元数据中的特定类型?
如果没有,显式键入附加DP的静态Get-and Set-methods是否有意义?
例:
如果我有以下声明:
public static int GetAttachedInt(DependencyObject obj) {
return (int)obj.GetValue(AttachedIntProperty);
}
public static void SetAttachedInt(DependencyObject obj, int value) {
obj.SetValue(AttachedIntProperty, value);
}
public static readonly DependencyProperty AttachedIntProperty =
DependencyProperty.RegisterAttached("AttachedInt", typeof(int),
typeof(Ownerclass), new UIPropertyMetadata(0));
Run Code Online (Sandbox Code Playgroud)
如下更改它是否有意义,只将其应用于TextBoxes?
public static int GetAttachedInt(TextBox textBox) {
return (int)textBox.GetValue(AttachedIntProperty);
}
public static void SetAttachedInt(TextBox textBox, int value) {
textBox.SetValue(AttachedIntProperty, value);
}
public static readonly DependencyProperty AttachedIntProperty =
DependencyProperty.RegisterAttached("AttachedInt", typeof(int),
typeof(Ownerclass), new UIPropertyMetadata(0));
Run Code Online (Sandbox Code Playgroud)
我的问题是,因为这会导致不一致,因为GetValue和SetValue可以再用于任何类型,并且在标记中也不可能限制附件.
我以前做过的是我在PropertyChanged处理程序中添加了一个异常,并在那里引发了一个只允许类型为xy的异常.
你怎么看?
在IE中,嵌入了Flex应用程序,使用JS更改页面位置:
document.location.href = "#someFragmentIdentifier";
Run Code Online (Sandbox Code Playgroud)
导致页面标题更改为"#someFragmentIdentifier".我已经读过,原因应该是Flex应用程序与浏览器导航的集成,所以我在Flex编译器属性屏幕上禁用了它,但它没有修复任何东西.任何人都可以通过指出一些有用的行为解决方案帮助我.
谢谢.
PS:您可以通过启动Flex应用程序并手动更改当前URL来轻松地重现它,因此它包含片段标识符,然后刷新页面.
假设我的网站有Flash版本和非Flash版本.当用户访问我的网站时,有没有办法创建以下逻辑:
if (user has flash-plugin installed) { load flash website }
else { load non-flash website }
Run Code Online (Sandbox Code Playgroud)
我们在这里的时候.我可以为带宽控制做同样的事情吗?假设有线客户访问我的网站.他加载我的10mb满载Flash网站时没有问题.但如果网络连接速度较慢的人访问我的网站,我可以跳过Flash网站并将该用户重定向到非Flash网站吗?
如果没有办法实现这一点,是否有任何解决方法,任何一个?
提前致谢!
StringBuffer sb=null;
// Some more logic that conditionally assigns value to the StringBuffer
// Prints Value=null
System.out.println("Value="+sb);
// Throws NullPointerException
System.out.println("Value=" + sb != null ? sb.toString() : "Null");
Run Code Online (Sandbox Code Playgroud)
此问题的修复包括括号中的三元运算符:
// Works fine
System.out.println("Value=" + (sb != null ? sb.toString() : "Null"));
Run Code Online (Sandbox Code Playgroud)
这怎么可能?
当我调试某些东西时,我想存储与我目前正在处理的错误 * 相关的断点/书签。因此,当我切换到另一个 bug* 时,我不希望每次都手动禁用与以前的 bug 相关的断点/书签,并为新的 bug 创建另一个。可以标记断点或书签会很棒。
到目前为止,我通过为我正在处理的每个错误存储 .suo 文件来克服上述问题*,但我发现很难/尴尬地处理多个 .suo 文件......
您如何处理上述问题,或者是否有人知道任何 VS 附加组件或一些执行类似操作的工具?
谢谢!
*错误 - 错误/问题/current_project/任何
c# ×3
html ×2
apache-flex ×1
assembly ×1
c ×1
debugging ×1
exists ×1
java ×1
linq ×1
linq-to-sql ×1
logic ×1
maintenance ×1
optimization ×1
replace ×1
struct ×1
typedef ×1
visual-c++ ×1
wpf ×1