小编Sum*_*Tea的帖子

什么时候应该用汇编语言设置进位标志

在C中编写ARM汇编模拟器时,我对此问题感到困惑.我在论坛中发现了一些类似的问题,但没有一个解释如何使用两个操作数和结果之间的关系来设置进位标志.

任何回复表示赞赏.提前致谢.

看待.

c assembly arm

8
推荐指数
2
解决办法
7373
查看次数

scanf何时开始和停止扫描?

scanfEnter按下键时,似乎开始扫描输入,我想用下面的代码验证这一点(为简单起见,我省略了错误检查和处理).

#include <stdio.h>

int main(int argc, char **argv) {
    /* disable buffering */
    setvbuf(stdin, NULL, _IONBF, 0);
    int number;

    scanf("%d", &number);
    printf("number: %d\n", number);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是另一个问题,在我禁用输入缓冲之后(只是为了验证结果;我知道我应该在实际中做到这一点,以防它干扰结果),输出是(注意额外的提示):

$ ./ionbf
12(space)(enter)
number: 12
$
$
Run Code Online (Sandbox Code Playgroud)

这与输入缓冲启用时的输出不同(无额外提示):

$ ./iofbf
12(space)(enter)
number: 12
$
Run Code Online (Sandbox Code Playgroud)

在启用缓冲区时,似乎会消耗新的行字符.我在两台不同的机器上进行了测试,一台安装了gcc 4.1.2和bash 3.2.25,另一台安装了gcc 4.4.4和bash 4.1.5,结果两者相同.

问题是:

  1. 如何在启用和禁用输入缓冲时解释不同的行为?
  2. 回到原来的问题,什么时候scanf开始扫描用户输入?角色进入的那一刻?或者它是否缓冲直到一条线完成?

c io buffer scanf

7
推荐指数
1
解决办法
2578
查看次数

Kerberos:UPN和SPN之间的区别

我现在正在使用GSSAPI来破解跨平台应用程序.虽然我不清楚UPN和SPN之间的区别.

开发环境是CentOS 6.4上的Samba4 AD DC服务器,Windows服务器2008 R2是域中的成员盒,例如EXAMPLE.COM(您可能很好奇为什么不直接使用Win2008作为DC.正如我之前所说,应用程序是跨平台的,我现在正在测试这个设置.正常的Win DC-Linux MEM设置工作正常.).我创建了一个新用户foobar:users来运行该应用程序.当我使用foobar@EXAMPLE.COMUPN来验证针对Kerberos的应用程序时,我一直在接收

Kerberos:Principal可能不会充当服务器错误

在Samba maillist上的一个帖子之后,我想我应该app/dc.example.com为UPN 创建一个服务主体名称samba-tool

samba-tool spn add app/dc.example.com foobar
Run Code Online (Sandbox Code Playgroud)

这次我会收到另一个错误

Samba4 KDC - 在hdb中找不到这样的条目

我的问题是UPN和SPN之间有什么区别?通过samba-tool spn list foobar,它说foobar 具有 servicePrincipalName app/dc.example.com.我怎么能将UPN与SPN联系起来?

非常感谢你.

samba spn kerberos gssapi

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

MP3文件中的主要结构是否真实?

我现在正在对MP3文件进行解码,但是对MP3文件只有一些基础知识。这些天,我为MP3实现了一个简单的解码器。在将解码结果与Maaate解码器进行比较时,我遇到了这个问题。

我的解码器比Maaate解码器多提取一帧。在仔细检查了示例MP3文件的结果之后,我发现第一帧异常。对于我的样本文件,第一帧的长度为413个字节,帧头0xfffb9064不同于所有其他具有100个字节长和header的帧0xfffb1064

我的问题是:结果中的第一个“框架”是真实框架吗?是这样,为什么它看起来与别人不同?如果不是,此结​​构用于什么,以及如何将它们与其他结构共享,因为它们都共享帧同步代码0xfff

audio mp3 mpeg codec

6
推荐指数
1
解决办法
1758
查看次数

有没有可用的Processing程序分析器?

我的项目在Processing中编码,是否有可用于处理的分析器?如果没有,如何测试Processing程序的性能?

谢谢和最诚挚的问候

processing profiler

6
推荐指数
1
解决办法
813
查看次数

如何识别Java字节码中的覆盖方法?

我现在专注于需要深入了解Java字节代码的项目.

bcel的帮助下,我现在可以完成大部分工作.我现在不清楚的一点是如何识别子类方法覆盖其基本代码?文件中是否记录了.class与指示此覆盖关系的方法相关联的属性,或者我应该向后回到其基类可以比较方法签名?

任何提示将受到高度赞赏.

java methods overriding jvm bytecode

6
推荐指数
1
解决办法
899
查看次数

GRUB stage 1.5的代码驻留在磁盘上的位置是什么?它加载的地址是什么?

我已经grub v1.98安装并在拆解MBR后发现以下我不理解的代码片段:

xor ax,ax
mov [si+0x4],ax
inc ax
mov [si-0x1],al
mov [si+0x2],ax
mov word [si],0x10
mov ebx,[0x7c5c]
mov [si+0x8],ebx
mov ebx,[0x7c60]
mov [si+0xc],ebx
mov word [si+0x6],0x7000
mov ah,0x42
int 0x13
Run Code Online (Sandbox Code Playgroud)

看来这段代码试图设置阶段1.5代码的磁盘地址,然后加载并运行它.但是,我怎么能弄清楚它试图读取哪个物理块?更重要的是,舞台1.5代码的目的地是什么?0x7000

我指的是Windows 7的MBR,其中加载了后续的启动代码0x7c00.鉴于MBR首先被装载在地址0x7c00,它包含了一段代码从复制MBR 0x7c000x0600,然后分支到0x0600在壳体的原代码损坏.将加载阶段1.5代码解决0x7000冲突的原始代码?更重要的是,我还发现:

jmp short 0x65
nop
sar byte [si+0x7c00],1
mov es,ax
mov ds,ax
mov si,0x7c00
mov di,0x600
mov cx,0x200
cld
rep movsb
push ax
push word 0x61c
retf
Run Code Online (Sandbox Code Playgroud)

在MBR的开头.似乎代码尝试执行与Windows 7的MBR中相同的操作来将原始MBR复制0x7c000x0600 …

linux boot grub

6
推荐指数
1
解决办法
2320
查看次数

如何在cmake中使用CHECK_INCLUDE_FILES宏?

我需要将我的程序与Kerberos身份验证库(gssapi_krb5)链接到相应的头文件gssapi/gssapi.hgssapi/gssapi_krb5.h包含在源文件中.

目前,如果标头不存在,编译将继续,并在编译时错误停止,表示未找到标头文件.我想在cmake文件中实现的是检查头文件是否存在,如果没有找到则停止编译.

我将以下代码添加到我的CMakeList.txt文件中.

INCLUDE(CheckIncludeFiles)

CHECK_INCLUDE_FILES(gssapi/gssapi.h;gssapi/gssapi_krb5.h HAVE_KRB_HEADERS)
IF (NOT HAVE_KRB_HEADERS)
    RETURN()
ENDIF (NOT HAVE_KRB_HEADERS)
Run Code Online (Sandbox Code Playgroud)

但它仍然没有按照我的预期行事.我想要以下几行:

-- Looking for gssapi/gssapi.h - found
-- Looking for gssapi/gssapi_krb5.h - not found
Run Code Online (Sandbox Code Playgroud)

但失败了.此外,HAVE_KRB_HEADERS使用message宏输出时变量为空.编译继续,直到发生上述错误.

我在网上某处读到,这可能是因为CMake缓存.我对CMake很新,对这个概念不太清楚.我的CMake版本是2.6.我怎么能让这段代码工作?谢谢!

cmake

6
推荐指数
1
解决办法
5640
查看次数

线程堆栈和进程堆栈之间的区别是什么

线程和进程都有独立的堆栈吗?如果答案是肯定的,那么它们之间有什么区别?提前致谢!

operating-system

5
推荐指数
1
解决办法
687
查看次数

参考二维阵列

我想用OpenGL实现一个函数来用C++渲染一个圆柱体.我的功能签名如下:

#define POINTS_NUM  15
#define DEMESION    3

void drawCylinder( int slices, int segments, GLfloat (&vertices)[ POINTS_NUM ][ DEMESION ] );
Run Code Online (Sandbox Code Playgroud)

我想使用对二维数组的引用来限制用户输入,但是发生了一些奇怪的行为.当我实现上面声明的函数时,会发生链接器错误:

错误1错误LNK2005:"float(*vase)[3]"(?vase @@ 3PAY02MA)已经在shapes.obj vase.obj中定义了VaseAndAnimation

这里vase定义为:

GLfloat vase[ POINTS_NUM ][ DEMESION ];
Run Code Online (Sandbox Code Playgroud)

起初,我认为最后一个维度有问题.所以我在第二次试验中省略了它.这次我的函数声明是这样的:

void drawCylinder( int slices, int segments, GLfloat (&vertices)[ POINTS_NUM ][] );
Run Code Online (Sandbox Code Playgroud)

现在调用时发生编译时错误(vase定义未更改):

drawCylinder( 10, 10, vase );
Run Code Online (Sandbox Code Playgroud)

编译错误:

错误1错误C2087:'vertices':缺少下标d:\ visual studio 2008\projects\project1\computer graphics\vaseandanimation\shapes.h 25 VaseAndAnimation

错误2错误C2664:'drawCylinder':无法将参数3从'GLfloat [14] [3]'转换为'GLfloat(&)[14] [1]'d:\ Visual Studio 2008\Projects\Project1\Computer Graphics\VaseAndAnimation\vase.cpp 64 VaseAndAnimation

错误3错误C2087:'vertices':缺少下标d:\ visual studio 2008\projects\project1\computer graphics\vaseandanimation\shapes.h 25 VaseAndAnimation

错误4错误C2087:'vertices':缺少下标d:\ …

c++

5
推荐指数
1
解决办法
433
查看次数

标签 统计

c ×2

arm ×1

assembly ×1

audio ×1

boot ×1

buffer ×1

bytecode ×1

c++ ×1

cmake ×1

codec ×1

grub ×1

gssapi ×1

io ×1

java ×1

jvm ×1

kerberos ×1

linux ×1

methods ×1

mp3 ×1

mpeg ×1

operating-system ×1

overriding ×1

processing ×1

profiler ×1

samba ×1

scanf ×1

spn ×1