Wpis z mikrobloga

ostrzeżenie: main zwykle jest funkcją

; cat c.c
const short main[] =
{
-31928, 8428, -30392, 19686, 13709, 44, 0, 4536,
0, 16640, 23690, -250, -3200, -30555, 1628, 18687,
-14081, -4235, -16130, -30392, -17721, 17, 0, 1295,
-6216, 0, 18432, -207, 1295, -10282, -12604, -13376,
-10875, -16180, -15913, -12604, -13376, 175
};
; cc -Wall -Wl,-z,noseparate-code c.c
c.c:1:13: warning: ‘main’ is usually a function [-Wmain]
1 | const short main[] =
| ^~~~
; ./a.out
#linux #jezykc #programowanie
  • 13
  • Odpowiedz
via Wykop Mobilny (Android)
  • 2
@Morritz: tak, napisałem se w asemblerze (nasm), potem hexdump i zamieniłem na dziesiętne liczby ze znakiem żeby było ciekawiej. Dałbym Ci plusa za pytanie ale mam przekroczony limit (przez plusowanie całego tagu # 2137)
  • Odpowiedz
@Morritz: tu źródło jakby co (nie że jest trudne do deasemblacji ( ͡° ͜ʖ ͡°))

bits 64
STR_LEN equ (str.end - str)
global _start
_start:
sub rsp, 32
mov rsi, rsp
lea r14, [rel str]
mov rax, STR_LEN
.xor:
mov bl, [r14 + rax - 1]
xor bl, 0a5h
mov [rsi + rax - 1], bl
dec rax
jnz .xor


inc al ; write
mov rdi, rax
  • Odpowiedz
@maisterwihaister: dwa pytania

1. czemu str napisałeś ręcznie bajtami zamiast użyć literału xD też dla beki? (a, ok, te wartości nie mają sensu z jakiegoś powodu, ty coś tam jeszcze z nimi robisz, zaraz cię rozkoduję, śmieszku)
2. czemu gołe bajty z hexdumpa wstawiasz jako 16-bitowe wartości (wtf) ZE ZNAKIEM (WTF) XD
  • Odpowiedz
@zwei: sraken pierdaken

co do 2. to czemu nie 32 albo 64, byłoby dużo śmieszniej, chyba że cię śmieszy akurat 16 bitów
  • Odpowiedz
@zwei:

; cat c2.c
const _Complex double main[] =
{
2.8971494799831897e+62 + 2.5935490618083038e-223i,
-7.667367425484754e+303 + 4.3242328905279486e+43i,
-6.141539765341284e-264 + 2.605888324755316e-284i,
-4.740354078249856e+304 + -8.242467726023189e+56i,
-2.8652183619730897e+71 + 5.6921105e-317i
};
; cc -Wall -Wl,-z,noseparate-code c2.c
Odnośnie pytań to na pierwsze sobie odpowiedziałeś a drugie to po prostu akurat w tamtej chwili myślałem, że tak będzie śmiesznie. Szukanie w tym głębokiego sensu byłoby błędem.
  • Odpowiedz