( ), :
void Check( unsigned const char* x);
void Do() {
static const unsigned char bytes[] __attribute__((section(".text"))) =
{
0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF, 0x10,
0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF, 0x10,
0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF, 0x10,
0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF, 0x10,
0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF, 0x10,
0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF, 0x10,
0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF, 0x10,
0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF, 0x10
};
Check( bytes );
}
int main()
{
Do();
}
:
Disassembly of section .text:
08048580 <Do()>:
8048580: 83 ec 18 sub $0x18,%esp
8048583: 68 a0 85 04 08 push $0x80485a0
8048588: e8 e3 ff ff ff call 8048570 <Check(unsigned char const*)>
804858d: 83 c4 1c add $0x1c,%esp
8048590: c3 ret
... much other disassembled code follows ...
080485a0 <Do()::bytes>:
80485a0: 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 ................
80485b0: 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 ................
80485c0: 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 ................
80485d0: 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 ................
80485e0: 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 ................
80485f0: 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 ................
8048600: 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 ................
8048610: 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 ................
.text.
, , :
void Check( unsigned const char* x);
template< typename IN, typename OUT, unsigned int size >
void Cpy( IN (&in)[size], OUT (&out)[size] )
{
static_assert( sizeof( IN) == sizeof( OUT ) );
memcpy( out, in, size * sizeof(OUT) );
}
void Do() {
static const unsigned char static_bytes[] __attribute__((section(".text"))) =
{
0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF, 0x10,
0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF, 0x10,
0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF, 0x10,
0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF, 0x10,
0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF, 0x10,
0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF, 0x10,
0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF, 0x10,
0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF, 0x10
};
unsigned char bytes[ sizeof( static_bytes )];
Cpy( static_bytes, bytes );
Check( bytes );
}
int main()
{
Do();
}
- .text, . .