Faits: A. Le 24 octobre 2011, des gendarmes ont observé X._ discuter avec un individu à l'avenue du Mail, à Genève. Lorsqu'ils se sont approchés des deux hommes, X._ a pris la fuite. Interpellé, le second individu a été entendu le 4 novembre 2011. Il a reconnu, sur planche photographique, X._, qui se faisait appeler Fredo et lui vendait de la cocaïne depuis 6 mois. Le 10 novembre 2011, A._, contrôlé alors qu'il cherchait à se procurer de la cocaïne vers la plaine de Plainpalais a, de même, reconnu X._, qu'il connaissait comme « Fernando » et à qui il avait acheté plus de 30 grammes de cocaïne pour une somme supérieure à 3000 fr. Le 23 novembre 2011, X._ a été interpellé sur la base de ces informations. Il a expliqué avoir vendu de la cocaïne plusieurs années auparavant mais non dernièrement. Il n'avait plus de titre de séjour en Suisse. En audience contradictoire devant le Ministère public, les intéressés ont maintenu leurs versions respectives. Sur délégation du Ministère public, la gendarmerie a encore procédé, en présence de X._, à l'audition de B._, C._ et D._, qui ont tous trois confirmé avoir acquis depuis plusieurs années de la cocaïne à X._, qui se faisait appeler « Fred ». X._ a nié connaître ces témoins et affirmé être victime d'un policier qui lui cherchait des problèmes. Renvoyé devant le Tribunal de police du canton de Genève, notamment pour infractions à la LStup, X._ a requis l'audition de ces cinq témoins à charge et la production de leurs extraits de casier judiciaire et renseignements de police. Par courrier du 16 avril 2012 puis, statuant sur question préjudicielle lors de l'audience du 3 mai 2012, le Tribunal de police a rejeté cette requête. Par jugement du même jour, le Tribunal de police a condamné X._ à 18 mois de privation de liberté sous déduction de 163 jours de détention avant jugement pour infractions aux art. 19 al. 1 et 2 let. a LStup ainsi qu'à l'art. 115 al. 1 let. b LEtr. B. Saisie d'un appel du condamné, la Chambre pénale d'appel et de révision de la Cour de justice du canton de Genève l'a rejeté, par arrêt du 9 juillet 2012. Elle a considéré, en bref, que, en vertu du principe de l'immédiateté limitée, l'autorité de première instance n'était pas tenue de réentendre les témoins en question. En ce qui concerne l'infraction à la LEtr., la cour cantonale a retenu que l'on voyait mal comment le prévenu pouvait prétendre avoir séjourné illégalement en Suisse par négligence, dès lors qu'il avait admis plusieurs fois savoir qu'il s'y trouvait en situation irrégulière, que sa demande d'asile avait fait l'objet d'une décision de non-entrée en matière et qu'il ne disposait pas de documents d'identité ni d'autorisation de séjour. Il avait, en outre, déclaré avoir été détenu sur le plan administratif durant un an dans le canton de Schwytz, ce qui ne pouvait qu'être en lien avec une procédure d'expulsion de Suisse qui n'avait pas abouti. C. X._ forme un recours en matière pénale contre cette décision. Il conclut, avec suite de frais et dépens, principalement à sa réforme dans le sens de son acquittement de l'infraction à l'art. 19 al. 1 et al. 2 let. a LStup ainsi qu'à sa condamnation pour infraction par négligence à l'art. 115 al. 1 let. b LEtr. A titre subsidiaire, il demande l'annulation de l'arrêt querellé, le renvoi de la cause à l'autorité de première instance et qu'il soit intimé à cette autorité de procéder à l'audition des cinq témoins précités. Il requiert, par ailleurs, l'assistance judiciaire. Il n'a pas été ordonné d'échange d'écritures.