声明数组后,如何存储以下格式的内容:“ 0xff”到char数组。我将在下面说明我的意思。
当编写这样的代码时,可以正常工作:
int main (void){
unsigned char array[] = {0xff,0xa4};
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是,我需要稍微复杂一点。在声明完数组后,我需要给它分配诸如0xff之类的东西。我如何才能使其工作并获得与上述代码完全相同的结果?使用下面的代码,我不断收到错误“ multi-character character constant [-Wmultichar]”和“ large integer implicitly truncated to unsigned type [-Woverflow]”。
int main(void){
unsigned char array[2];
array[0] = '0xff';
array[1] = '0xa4';
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我知道objdump -dr在我的文件call中使用时会出现在机器代码中,e8 00 00 00 00因为它尚未链接。但是我需要找出00 00 00 00链接器完成它的工作后会变成什么。我知道它应该计算偏移量,但我对此有点困惑。
以下面的代码为例,链接器部分完成后,应该如何e8 00 00 00 00?我如何得到这个答案?
我正在使用此示例代码进行测试:(我正在尝试调用 moo)
Disassembly of section .text:
0000000000000000 <foo>:
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 89 7d fc mov %edi,-0x4(%rbp)
7: 8b 45 fc mov -0x4(%rbp),%eax
a: 83 e8 0a sub $0xa,%eax
d: 5d pop %rbp
e: c3 retq
000000000000000f <moo>:
f: 55 push %rbp
10: 48 89 e5 mov %rsp,%rbp
13: …Run Code Online (Sandbox Code Playgroud) arrays ×1
assembly ×1
c ×1
disassembly ×1
gcc ×1
hex ×1
int ×1
linker ×1
machine-code ×1
x86 ×1