Меня напрягает вечное указание размера функции
Можно ли это как-то убрать, и просто объявлять: _MessageBox, _ExitProcess, как с msvcrt: _printf, __getch и т.д?
Прошу помочь с оптимизацией данного скрипта.
#!/bin/bash
fille="$1"
cmd=
while read -r line; do
source=$(echo "$line" | awk 'BEGIN { FS = "," } { print $1} ');
target=$(echo "$line" | awk 'BEGIN { FS = "," } { print $2} ');
cmd="${cmd}s,$source,$target,g;"
done < "$file"
git filter-branch -f --msg-filter "sed -e '$cmd'"
Как это понимать? Это что вся функция, которая нам устанавливает связь с сервером?
sysdeps/unix/sysv/linux/connect.c
, но всё что она делает -- это системный вызов, обёрнутый в манипуляции с pthread-cancellation.$ gcc -nostartfiles -static str.s -o str
$ gdb ./str
...
(gdb) b *0x40102f
Breakpoint 1 at 0x40102f
(gdb) r
Starting program: /home/jcmvbkbc/tmp/toster/str
Breakpoint 1, 0x000000000040102f in _start ()
(gdb) x/3b $rsi - 3
0x402000 <source>: 1 2 3
(gdb) x/3b $rdi - 3
0x402010 <dest>: 1 2 3
Почему не работает
leaw arrayW, %si movw (%si), %ax
leal arrayW, %esi
movw (%esi), %ax
$ gcc -m32 -static -nostartfiles load.s -o load
$ gdb ./load
(gdb) b _start
Breakpoint 1 at 0x8049000
(gdb) r
Starting program: /home/jcmvbkbc/tmp/toster/load
Breakpoint 1, 0x08049000 in _start ()
(gdb) si
0x08049006 in _start ()
(gdb)
0x08049009 in _start ()
(gdb) p/x $esi
$1 = 0x804a000
(gdb) p/x $ax
$2 = 0x5
Вот так не работает: button_left.button_port = "PORTD";
А так работает:
struct button button_left = {"PORTD", 6, 0, 0, 0, 12};
Почему возникает ошибка при обращении к struct?
Или из первого кэша, если линий кэша мало и она удаляется - она переносится в кэш второго уровня?
constexpr const unsigned long long int wtoi(const wchar_t* str) { unsigned long long int result = 0; for (int i = 0; str[i]; i++) { int digit = getIntFromWchar_t(str[i]); if (digit < 0 || digit > 9) break; result = result * 10 + digit; } return result; }
constexpr const int getIntFromWchar_t(wchar_t chr) { switch (chr) { case L'0': return 0; case L'1': return 1; case L'2': return 2; case L'3': return 3; case L'4': return 4; case L'5': return 5; case L'6': return 6; case L'7': return 7; case L'8': return 8; case L'9': return 9; default: return 10; } }
int getIntFromWchar_t(wchar_t chr) {
return chr - L'0';
static_assert(L'1' == L'0' + 1);
static_assert(L'2' == L'1' + 1);
static_assert(L'3' == L'2' + 1);
static_assert(L'4' == L'3' + 1);
static_assert(L'5' == L'4' + 1);
static_assert(L'6' == L'5' + 1);
static_assert(L'7' == L'6' + 1);
static_assert(L'8' == L'7' + 1);
static_assert(L'9' == L'8' + 1);
}